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 모델합니다.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

설명

GroupBy 지정 된 프로젝션을 적용 합니다 projection 매개 변수입니다.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.

적용 대상

추가 정보