Group By 句 (Visual Basic)
更新 : 2007 年 11 月
クエリ結果の要素をグループ化します。グループごとに集計関数を適用するためにも使用できます。グループ化操作は、1 つ以上のキーに基づいて行われます。
Group [ listField1 [, listField2 [...] ] By keyExp1 [, keyExp2 [...] ]
Into aggregateList
指定項目
listField1, listField2
省略可能です。グループ化された結果に含めるフィールドを明示的に示す、クエリ変数の 1 つ以上のフィールドです。フィールドを指定しない場合、グループ化された結果にはクエリ変数のすべてのフィールドが含まれます。keyExp1
必ず指定します。要素のグループを決定するために使用するキーを識別する式です。複数のキーを指定して、複合キーを指定できます。keyExp2
省略可能です。keyExp1 と結合して複合キーを作成する 1 つ以上の追加キーです。aggregateList
必ず指定します。グループの集計方法を示す 1 つ以上の式です。グループ化された結果のメンバ名を示すには、次のいずれかの形式で、Group キーワードを使用します。Into Group
グループに適用する集計関数を記述することもできます。
解説
Group By 句を使用して、クエリの結果をグループに分割できます。グループ化は、1 つのキー、または複数のキーで構成される複合キーに基づいて行われます。一致するキー値と関連付けられた要素は、同じグループに入れられます。
グループの参照に使用するメンバ名を示すには、Into 句の aggregateList パラメータと Group キーワードを使用します。Into 句に集計関数を含めることで、グループ化された要素の値を計算することもできます。標準的な集計関数の一覧については、「Aggregate 句 (Visual Basic)」を参照してください。
使用例
次のコード例は、住所 (国) に基づいて顧客の一覧をグループ化し、グループごとに顧客数を出します。結果は、国名の順序に並べます。グループ化した結果は、都市名の順序に並べます。
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