次の方法で共有


Group By 句 (Visual Basic)

クエリ結果の要素をグループ化します。 グループごとに集計関数を適用するためにも使用できます。 グループ化操作は、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 句を使用して、クエリの結果をグループに分割できます。 グループ化は、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

参照

関連項目

Select 句 (Visual Basic)

From 句 (Visual Basic)

Order By 句 (Visual Basic)

Aggregate 句 (Visual Basic)

Group Join 句 (Visual Basic)

概念

Visual Basic における LINQ の概要

その他の技術情報

クエリ (Visual Basic)