Comparteix a través de


ObjectQuery<T>.GroupBy(String, String, ObjectParameter[]) Método

Definición

Agrupa los resultados de la consulta de acuerdo con los criterios especificados.

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)

Parámetros

keys
String

Columnas de clave por las que se deben agrupar los resultados.

projection
String

Lista de propiedades seleccionadas que define la proyección.

parameters
ObjectParameter[]

Cero o más parámetros que se usan en este método.

Devoluciones

Nueva instancia de ObjectQuery<T> de tipo DbDataRecord que es equivalente a la instancia original, pero aplicando GROUP BY.

Excepciones

El parámetro query es null o una cadena vacía.

o bien

El parámetro projection es null o una cadena vacía.

Ejemplos

En este ejemplo, se crea un nuevo objeto ObjectQuery<T> que contiene los resultados de la consulta existente agrupados por nombre de producto.

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

En este ejemplo se devuelve un conjunto de registros de datos anidados que contienen la Contact.LastName columna, agrupada y ordenada alfabéticamente por la primera letra de 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]);
            }
        }
    }
}

Comentarios

GroupBy aplica la proyección especificada por el projection parámetro . Esto significa que la ObjectQuery<T> devuelta por el método GroupBy siempre es de tipo DbDataRecord. Para más información, consulte Consultas de objeto.

Se aplica a

Consulte también