---
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
```