0
我有表格IEnumerable<DataRow>
表格1和表格2。這兩個表格都有列Column1
和Column2
。按多個列和計數組
我想在Column1
上做一個左外連接,並希望得到Table2
中存在的行數並將記錄加載到DataTable中。
我嘗試以下查詢
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但我不一樣的應用到我的查詢......
你能幫助我解決這個查詢?
謝謝大衛!您的查詢有效。我仍然很想知道是否有辦法執行類似於以下SQL查詢的方法 從表1中選擇a.Column1,a.Column2,Count(b.Column1) a a.Column1上的左外部聯接表2b = b.Column1和a.Column2 = b.Column2 group by a.Column1,a.Column2 – 2010-07-09 15:06:06
添加了更多解決方案...值得注意的是,如果Table1中存在重複項,最後的解決方案將會給出不同的結果。 – 2010-07-09 15:22:37
太棒了!非常感謝David。 – 2010-07-09 15:38:06