【发布时间】:2022-01-13 17:40:16
【问题描述】:
我有两个合同和一个查询,我想根据连接结果选择其中一个,而不使用 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
}
}
【问题讨论】:
-
lav是一个对象,你认为它与零相比如何? -
这不是 null ,这是我的错,因为如果 lav 为 null 则抛出
NullReferenceException,我使用过 lav.description != null ? lav.description : "未找到" 但没用。 -
如果是 EF Core,你可以使用第一个表达式,EF Core 会处理空值。在其他情况下,您必须使用三元运算符
? : -
我使用了三元运算符,但它抛出了
NullReferenceException -
所以发布真正的查询,而不是这个简化的演示。你错过了重要的部分。
标签: entity-framework linq entity-framework-core