我有兩個合同和一個查詢,我想根據連接結果選擇其中一個,而不使用 where 子句,
from a in pContext
join c in vContext
on a.id equals c.id into av
from lav in av.DefaultIfEmpty()
if(lav != null )
{
select new DTO1()
{
a.id,
a.name,
lav.description
}
}
else
{
select new DTO2()
{
a.id,
a.name
}
}
uj5u.com熱心網友回復:
EF Core 將 LINQ“左連接”轉換為 SQL 左連接,在這種情況下您不需要處理空值,因為它需要來自 DbDataReader 的值。簡單的投影應該有效:
var query =
from a in pContext
join c in vContext on a.id equals c.id into av
from lav in av.DefaultIfEmpty()
select new DTO1
{
a.id,
a.name,
lav.description
};
uj5u.com熱心網友回復:
from a in pContext
join c in vContext
on a.id equals c.id into av
from lav in av.DefaultIfEmpty()
select new DTO()
{
id = a.id,
name = a.name,
description = lav != null ? lav.description : "No Specified"
}
該解決方案基于使用三元運算子的Svyatoslav Danyliv評論,但使用不同的條件來避免NullReferenceException.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/381798.html
上一篇:將給定的SQL查詢轉換為LINQ
