簡體   English   中英

實體框架5基於包括的動態選擇

[英]Entity Framework 5 dynamic select based on include

我正在使用EF查找聯系人,然后在圖中包含公司,然后將其放在DTO中。 我只希望創建DTO的公司(如果存在),而我不希望包含空白的DTO。 (它正在REST服務中傳輸,我不希望有無數的空標簽。)

return (from c in _dc.Contact.Include("Company")
                where c.ContactId == id
                select new ContactDto
                {
                    ContactId = c.ContactId,
                    FirstName = c.FirstName,
                    LastName = c.LastName,
                    Company = new CompanyDto
                                {
                                    CompanyId = c.Company.CompanyId,
                                    Name = c.Company.Name
                                } 
                }).ToList();

對於沒有關聯公司的聯系人,此操作崩潰了。 通常,我會創建一個空白對象,但是如上所述,這將包括很多空白標簽。

我想做類似的事情(這顯然是不可能的)

return (from c in _dc.Contact.Include("Company")
                where c.ContactId == id
                select new ContactDto
                {
                    ContactId = c.ContactId,
                    FirstName = c.FirstName,
                    LastName = c.LastName,
                    if (c.Company !=null) 
                    {
                        Company = new CompanyDto
                                {
                                    CompanyId = c.Company.CompanyId,
                                    Name = c.Company.Name
                                } ;
                    }
                }).FirstOrDefault();

先感謝您

奧利

也許您可以嘗試使用三元運算符:

            Company = (c.Company!=null)?
                (new CompanyDto
                {
                    CompanyId = c.Company.CompanyId,
                    Name = c.Company.Name
                })
                :null

嘗試這樣的事情。 我前面沒有VS,因此您需要注意語法。

return (from c in _dc.Contact 
              join co in _dc.Company on c.CompanyId equals co.CompanyId into subCompanies
                from sc in subCompanies.DefaultIfEmpty()
                where c.ContactId == id
                select new ContactDto
                {
                    ContactId = c.ContactId,
                    FirstName = c.FirstName,
                    LastName = c.LastName,
                    Company = sc
                }).FirstOrDefault()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM