1184 Stimmen

Gruppieren nach mehreren Spalten

Wie kann ich GroupBy mehrere Spalten in LINQ tun

Etwas Ähnliches wie dies in SQL:

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

Wie kann ich dies in 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

1voto

John Punkte 462

Group x by neu { x.Col, x.Col}

1voto

Let's Enkindle Punkte 138

.GroupBy(x => (x.MaterialID, x.ProductID))

4 Stimmen

Fügen Sie eine Erklärung hinzu, wie dieser Code das Problem löst.

0voto

Kai Hartmann Punkte 2952
.GroupBy(x => x.Column1 + " " + x.Column2)

0 Stimmen

Kombiniert mit Linq.Enumerable.Aggregate() Dies ermöglicht sogar die Gruppierung nach einer dynamischen Anzahl von Eigenschaften: propertyValues.Aggregate((current, next) => current + " " + next) .

3 Stimmen

Das ist eine bessere Antwort, als man ihr zugesteht. Es könnte problematisch sein, wenn es Fälle von Kombinationen geben könnte, in denen Spalte1 addiert mit Spalte2 dasselbe ergibt, wenn Spalte1 sich unterscheidet ("ab" "cde" würde mit "abc" "de" übereinstimmen). Abgesehen davon ist dies eine gute Lösung, wenn Sie keinen dynamischen Typ verwenden können, weil Sie Lambdas nach der Gruppierung durch in separaten Ausdrücken vorkonstruieren.

3 Stimmen

"ab" "cde" sollte eigentlich nicht mit "abc" "de" übereinstimmen, daher das Leerzeichen dazwischen.

0voto

Dani Punkte 1513

について VB y anonym/lambda :

query.GroupBy(Function(x) New With {Key x.Field1, Key x.Field2, Key x.FieldN })

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X