--- tags: 程式語法, LINQ, VB --- # [VB] LINQ - Group By ## 原始DataTable | Area | Lot | Quantity | | ---- | --- | -------- | | F1 | A | 3 | | F2 | B | 5 | | F1 | B | 2 | | F1 | A | 7 | | F2 | B | 3 | ## 結果DataTable 相同Area和Lot的資料列合併,合併的Quantity加總,最後以Quantity排序。 | Area | Lot | Quantity | | ---- | --- | -------- | | F1 | B | 2 | | F2 | B | 8 | | F1 | A | 10 | ## 程式 ```vb 'LINQ查詢 Dim query = From dr In originTable Group dr By g = New With { Key .Area = dr("Area"), Key .Lot = dr("Lot") } Into Group Select dt = New With { .Area = g.Area, .Lot = g.Lot, .Quantity = g.Sum(Function(x) x("Quantity")) } Order By dt.Quantity '建立一個和原始table有同樣欄位的結果table Dim resultTable As DataTable = New DataTable resultTable = originTable.Clone() '將LINQ查詢資料加到結果table For Each dr In query Dim row As DataRow = resultTable.NewRow() row("Area") = dr.Area row("Lot") = dr.Lot row("Quantity") = dr.Quantity resultTable.Rows.Add(row) Next ```