Udostępnij za pośrednictwem


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

Definicja

Grupuje wyniki zapytania według określonych kryteriów.

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)

Parametry

keys
String

Kolumny kluczy, według których mają być grupowane wyniki.

projection
String

Lista wybranych właściwości definiujących projekcję.

parameters
ObjectParameter[]

Zero lub więcej parametrów używanych w tej metodzie.

Zwraca

Nowe ObjectQuery<T> wystąpienie typu DbDataRecord , które jest równoważne oryginalnemu wystąpieniu z zastosowanym elementem GROUP BY .

Wyjątki

Parametr query jest null lub jest pustym ciągiem.

-lub-

Parametr projection jest null lub jest pustym ciągiem.

Przykłady

W tym przykładzie tworzony jest nowy ObjectQuery<T> obiekt zawierający wyniki istniejącego zapytania pogrupowanego według nazwy produktu.

    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"]);
        }
    }
}

Ten przykład zwraca zestaw zagnieżdżonych rekordów danych, które zawierają kolumnę Contact.LastName , pogrupowane i posortowane alfabetycznie według pierwszej litery 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]);
            }
        }
    }
}

Uwagi

GroupBy stosuje projekcję określoną przez projection parametr . Oznacza to, że zwracany ObjectQuery<T> przez metodę GroupBy jest zawsze typu DbDataRecord. Aby uzyskać więcej informacji, zobacz Zapytania dotyczące obiektów.

Dotyczy

Zobacz też