ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Method

定義

指定された条件でクエリの結果をグループ化します。Groups the query results by the specified criteria.

public:
 System::Data::Objects::ObjectQuery<System::Data::Common::DbDataRecord ^> ^ GroupBy(System::String ^ keys, System::String ^ projection, ... cli::array <System::Data::Objects::ObjectParameter ^> ^ parameters);
public System.Data.Objects.ObjectQuery<System.Data.Common.DbDataRecord> GroupBy (string keys, string projection, params System.Data.Objects.ObjectParameter[] parameters);
member this.GroupBy : string * string * System.Data.Objects.ObjectParameter[] -> System.Data.Objects.ObjectQuery<System.Data.Common.DbDataRecord>
Public Function GroupBy (keys As String, projection As String, ParamArray parameters As ObjectParameter()) As ObjectQuery(Of DbDataRecord)

パラメーター

keys
String String String String

結果のグループ化に使用するキー列。The key columns by which to group the results.

projection
String String String String

投影を定義する、選択したプロパティの一覧。The list of selected properties that defines the projection.

parameters
ObjectParameter[]

このメソッドで使用される 0 個以上のパラメーター。Zero or more parameters that are used in this method.

戻り値

GROUP BY が適用された元のインスタンスに相当する、DbDataRecord 型の新しい ObjectQuery<T> インスタンス。A new ObjectQuery<T> instance of type DbDataRecord that is equivalent to the original instance with GROUP BY applied.

例外

query パラメーターが null または空の文字列です。The query parameter is null or an empty string.

- または --or- projection パラメーターが null または空の文字列です。The projection parameter is null or an empty string.

この例は、 AdventureWorks Sales Modelに基づいています。This example is based on the AdventureWorks Sales Model.

この例では、製品名でグループ化された既存のクエリの結果を含む ObjectQuery<T> オブジェクトを新たに作成します。This example creates a new ObjectQuery<T> object that contains the results of the existing query grouped by product name.

    using (AdventureWorksEntities context =
        new AdventureWorksEntities())
    {
        string queryString = @"SELECT VALUE product 
            FROM AdventureWorksEntities.Products AS product";

        ObjectQuery<Product> productQuery =
            new ObjectQuery<Product>(queryString,
                context, MergeOption.NoTracking);

        ObjectQuery<DbDataRecord> productQuery2 =
            productQuery.GroupBy("it.name AS pn",
            "Sqlserver.COUNT(it.Name) as count, pn");

        // Iterate through the collection of Products
        // after the GroupBy method was called.
        foreach (DbDataRecord result in productQuery2)
        {
            Console.WriteLine("Name: {0}; Count: {1}",
                result["pn"], result["count"]);
        }
    }
}
    Using context As New AdventureWorksEntities()
        Dim queryString As String = "SELECT VALUE product " & vbCr & vbLf & " FROM AdventureWorksEntities.Products AS product"

        Dim productQuery As New ObjectQuery(Of Product)(queryString, context, MergeOption.NoTracking)

        Dim productQuery2 As ObjectQuery(Of DbDataRecord) = _
            productQuery.GroupBy("it.name AS pn", "Sqlserver.COUNT(it.Name) as count, pn")

        ' Iterate through the collection of Products 
        ' after the GroupBy method was called. 
        For Each result As DbDataRecord In productQuery2
            Console.WriteLine("Name: {0}; Count: {1}", result("pn"), result("count"))
        Next
    End Using
End Sub

この例では、 Contact.LastName列を含む入れ子になったデータレコードのセットを返します。このデータレコードは、の最初のContact.LastName文字でグループ化され、アルファベット順に並べ替えられています。This example returns a set of nested data records that contain the Contact.LastName column, grouped and sorted alphabetically by the first letter of Contact.LastName.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    // Define the query with a GROUP BY clause that returns
    // a set of nested LastName records grouped by first letter.
    ObjectQuery<DbDataRecord> query =
        context.Contacts
        .GroupBy("SUBSTRING(it.LastName, 1, 1) AS ln", "ln")
        .Select("it.ln AS ln, (SELECT c1.LastName " +
        "FROM AdventureWorksEntities.Contacts AS c1 " +
        "WHERE SubString(c1.LastName, 1, 1) = it.ln) AS CONTACT")
        .OrderBy("it.ln");

    // Execute the query and walk through the nested records.
    foreach (DbDataRecord rec in
        query.Execute(MergeOption.AppendOnly))
    {
        Console.WriteLine("Last names that start with the letter '{0}':",
                    rec[0]);
        List<DbDataRecord> list = rec[1] as List<DbDataRecord>;
        foreach (DbDataRecord r in list)
        {
            for (int i = 0; i < r.FieldCount; i++)
            {
                Console.WriteLine("   {0} ", r[i]);
            }
        }
    }
}
Using context As New AdventureWorksEntities()
    ' Define the query with a GROUP BY clause that returns 
    ' a set of nested LastName records grouped by first letter. 
    Dim query As ObjectQuery(Of DbDataRecord) = _
        context.Contacts.GroupBy("SUBSTRING(it.LastName, 1, 1) AS ln", "ln") _
        .Select("it.ln AS ln, (SELECT c1.LastName FROM AdventureWorksEntities.Contacts AS c1 " & _
                "WHERE SubString(c1.LastName, 1, 1) = it.ln) AS CONTACT").OrderBy("it.ln")

    ' Execute the query and walk through the nested records. 
    For Each rec As DbDataRecord In query.Execute(MergeOption.AppendOnly)
        Console.WriteLine("Last names that start with the letter '{0}':", rec(0))
        Dim list As List(Of DbDataRecord) = TryCast(rec(1), List(Of DbDataRecord))
        For Each r As DbDataRecord In list
            For i As Integer = 0 To r.FieldCount - 1
                Console.WriteLine(" {0} ", r(i))
            Next
        Next
    Next
End Using

注釈

GroupByprojectionパラメーターで指定したプロジェクションを適用します。GroupBy applies the projection specified by the projection parameter. つまり、ObjectQuery<T> メソッドから返される GroupBy の型は、常に DbDataRecord です。This means that the ObjectQuery<T> returned by the GroupBy method is always of type DbDataRecord. 詳細については、「オブジェクトクエリ」を参照してください。For more information, see Object Queries.

適用対象

こちらもご覧ください