544 votos

Grupo Por Varias Columnas

¿Cómo puedo hacer Agrupar Varias Columnas en LINQ

Algo similar a esto en SQL:

SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>

¿Cómo puedo convertir esto en LINQ:

QuantityBreakdown
(
    MaterialID int,
    ProductID int,
    Quantity float
)

INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID

751voto

leppie Puntos 67289

El uso de un tipo anónimo.

Por ejemplo

group x by new { x.Column1, x.Column2 }

399voto

Mo0gles Puntos 2624

Procedimiento de muestreo

.GroupBy(x => new { x.Column1, x.Column2 })

300voto

Sreedhar Puntos 6225

Ok tengo esta:

var query = (from t in Transactions
             group t by new {t.MaterialID, t.ProductID}
             into grp
                    select new
                    {
                        grp.Key.MaterialID,
                        grp.Key.ProductID,
                        Quantity = grp.Sum(t => t.Quantity)
                    }).ToList();

4voto

Smitty Puntos 423

Pensé que esta pregunta está pidiendo sobre el grupo por clase de propiedades, si desea agrupar varias columnas en contra de un objeto ADO (como una tabla de datos), usted tiene que asignar sus "nuevos" elementos variables:

EnumerableRowCollection<DataRow> ClientProfiles = CurrentProfiles.AsEnumerable()
                        .Where(x => CheckProfileTypes.Contains(x.Field<object>(ProfileTypeField).ToString()));
// do other stuff, then check for dups...
                    var Dups = ClientProfiles.AsParallel()
                        .GroupBy(x => new { InterfaceID = x.Field<object>(InterfaceField).ToString(), ProfileType = x.Field<object>(ProfileTypeField).ToString() })
                        .Where(z => z.Count() > 1)
                        .Select(z => z);

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X