クエリ結果の要素をグループ化します。 また、各グループに集計関数を適用するためにも使用できます。 グループ化操作は、1 つ以上のキーに基づいています。
構文
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
部品
listField1
、listField2
任意。 グループ化された結果に含めるフィールドを明示的に識別するクエリ変数または変数の 1 つ以上のフィールド。 フィールドが指定されていない場合、クエリ変数または変数のすべてのフィールドがグループ化された結果に含まれます。
keyExp1
必須。 要素のグループを決定するために使用するキーを識別する式。 複数のキーを指定して複合キーを指定できます。
keyExp2
任意。
keyExp1
と組み合わせて複合キーを作成する 1 つ以上の追加キー。aggregateList
必須。 グループの集計方法を識別する 1 つ以上の式。 グループ化された結果のメンバー名を識別するには、
Group
キーワードを使用します。キーワードは次のいずれかの形式になります。Into Group
-又は-
Into <alias> = Group
グループに適用する集計関数を含めることもできます。
注釈
Group By
句を使用すると、クエリの結果をグループに分割できます。 グループ化は、キーまたは複数のキーで構成される複合キーに基づいています。 一致するキー値に関連付けられている要素は、同じグループに含まれます。
Into
句の aggregateList
パラメーターと 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 句
- Aggregate 句
- Group Join 句
.NET