我正在尝试用c#linq来连接两个sql表,当找不到匹配项时设置默认值
在Months表中,我有以下数据
MonthId Name
1 Jan
2 Feb
3 Mar
4 Apr
5 May
mData低于数据
MonthId Count
1 10
2 20
3 5
我希望得到如下结果
Name Count
Jan 10
Feb 20
Mar 5
Apr 0
May 0
我有以下查询,只有在找到匹配时才会返回
from p in Months
join g in mData on p.MonthId equals g.MonthId
select new {
p.Name,
g.Count
}
答案 0 :(得分:1)
您需要将联接的结果放入一个组并调用DefaultIfEmpty
:
from p in Months
join g in mData on p.MonthId equals g.MonthId into monthData
from md in monthData.DefaultIfEmpty(new MData{Count = 0})
select new {
p.Name,
md.Count
}
Here是DefaultIfEmpty()