[英]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.