將查詢結果的專案分組。 也可以用來將聚合函數套用至每個群組。 群組作業是以一或多個索引鍵為基礎。
語法
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
-或-
Group [ listField1 [, listField2 [...] ] By alias1 = keyExp1 [, alias2 = keyExp2 [...] ]
Into aggregateList
組件
listField1、listField2選擇性。 查詢變數或變數的一或多個字段,可明確識別要包含在群組結果中的欄位。 如果未指定任何欄位,查詢變數或變數的所有欄位都會包含在群組結果中。
alias1、alias2選擇性。 指派給分組索引鍵的名稱。 如果提供別名,則可以在查詢結果中參照別名,而不是索引鍵運算式。
keyExp1必須的。 表達式,識別要用來判斷專案群組的索引鍵。 您可以指定多個索引鍵來指定複合索引鍵。
keyExp2選擇性。 結合
keyExp1的一或多個其他索引鍵,以建立複合索引鍵。aggregateList必須的。 識別群組匯總方式的一或多個表達式。 若要識別群組結果的成員名稱,請使用
Group關鍵詞,其可以是下列其中一種形式:Into Group-或-
Into <alias> = Group您也可以包含要套用至群組的聚合函數。
備註
您可以使用 Group By 子句將查詢的結果分成群組。 群組是以由多個索引鍵組成的索引鍵或複合索引鍵為基礎。 與相符索引鍵值相關聯的元素會包含在相同的群組中。
您可以使用 aggregateList 子句的 參數 Into 和 Group 關鍵詞來識別用來參考群組的成員名稱。 您也可以在 子句中包含 Into 聚合函數,以計算群組元素的值。 如需標準聚合函數的清單,請參閱 Aggregate 子句。
範例
下列程式代碼範例會根據客戶的位置(國家/地區)將客戶清單分組,並提供每個群組中的客戶計數。 結果會依國家/地區名稱排序。 分組的結果會依城市名稱排序。
Public Sub GroupBySample()
Dim customers = GetCustomerList()
Dim customersByCountry = From cust In customers
Order By cust.City
Group By CountryName = cust.Country
Into RegionalCustomers = Group, Count()
Order By CountryName
For Each country In customersByCountry
Console.WriteLine(country.CountryName &
" (" & country.Count & ")" & vbCrLf)
For Each customer In country.RegionalCustomers
Console.WriteLine(vbTab & customer.CompanyName &
" (" & customer.City & ")")
Next
Next
End Sub
另請參閱
- Visual Basic LINQ 簡介
- 查詢
- Select 子句
- From 子句
- Order By 子句
- 聚合子句
- 群組連接子句