【发布时间】:2011-03-13 15:23:54
【问题描述】:
我有IEnumerable<DataRow> 形式的Table1 和Table2。这两个表都有Column1 和Column2 列。
我想对Column1 进行左外连接,并想计算Table2 中存在的行数并将记录加载到数据表中。
我尝试了以下查询
var query = from p in Table1
join q in Table2 on p.Field<string>("Column1") equals q.Field<string>("Column1") into pq
from xyz in pq.DefaultIfEmpty()
group xyz by new { Col1 = p.Field<string>("Column1"), Col2 = p.Field<string>("Column2") } into g
select dtFinalData.LoadDataRow(new object[]
{
g.Key.Col1,
g.Key.Col2,
g.Count
}, false);
由于“g”代表分组数据,g.count 为表 2 中没有条目的行返回 1。我想为这些行返回“0”。
输入:
表 1
Col1Val1 Col2Val1
Col1Val2 Col2Val2
表 2
Col1Val1 Col2Val1
Col1Val1 Col2Val1
电流输出:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 1
预期结果:
Col1Val1 Col2Val1 2
Col2Val2 Col2Val2 0
我查看了LINQ - Left Join, Group By, and Count,但无法将其应用到我的查询中...
你能帮我解决这个问题吗?
【问题讨论】:
标签: linq count left-join linq-group