Linq左连接与where子句显示所有从左表不管
本文关键字:不管 子句 连接 where Linq 显示 | 更新日期: 2023-09-27 18:11:51
我遇到了一些问题
我需要CustomerDiscountGroups表中的所有内容,然后连接另一个表中的列。如果where条件显示没有customerdiscount,我仍然希望它显示CustomerDiscountGroups表中的所有列,并且Discount_PC(十进制)的状态为0
这是我的尝试
from c in CustomerDiscountGroups
join d in CustomerDiscounts on c.ID equals d.Discount_ID into cd
from cdi in (from f in cd
where f.AccountNo == "test"
select f).DefaultIfEmpty()
select new
{
c.ID,
c.DisplayName,
c.Image,
c.Added,
c.Added_by,
c.Edited,
c.Edited_by,
//cdi.Discount_PC
}
DefaultIfEmpty
将使cdi
成为null
,即使它是CustomerDiscounts
类型。你必须在select
条款中处理这种情况:
select new
{
c.ID,
c.DisplayName,
c.Image,
c.Added,
c.Added_by,
c.Edited,
c.Edited_by,
Discount_PC = cdi == null ? 0 : cdi.Discount_PC
}
为它写一个三元操作符有点尴尬,事实上,在c# 6中可能会有一个新的简写操作符。