Verwenden von GroupBy und Max in LINQ Lambda Expressions

8

Ich habe eine Sammlung, zum Beispiel:

%Vor%

Ich möchte LINQ verwenden und das folgende Ergebnis erhalten:

%Vor%

P.S.

%Vor%

Ich brauche eine Antwort in Form von

%Vor%

Ich hoffe auf Ihre Hilfe.

    
Pavel 07.04.2013, 18:25
quelle

3 Antworten

24

EDIT: Okay, jetzt haben wir einen etwas klareren Satz von Anforderungen (obwohl noch weit davon entfernt, klar geschrieben zu sein) der einfachste Ansatz wäre wahrscheinlich:

%Vor%

Leider bietet LINQ keine einfache Möglichkeit, "das Element mit dem maximalen Wert" (anstelle des Maximalwerts selbst) zu erhalten. Ich habe eine Methode in MoreLINQ , die dies jedoch tut, genannt MaxBy :

%Vor%

Ursprüngliche Antwort (Gruppierung nach ID2, wobei der Maximalwert verwendet wird)

Ich antworte unter der Annahme, du wolltest eigentlich nach id2 statt nach id1 gruppieren, und du wolltest eigentlich die Ergebnisse von 12 und 87 anstatt von 6 und 87. In diesem Fall Sie möchten:

%Vor%

Oder (möglicherweise einfacher zu verstehen):

%Vor%

Oder:

%Vor%

Oder:

%Vor%

Oder sogar:

%Vor%

Wie Sie sehen, GroupBy gibt es viele Überladungen:)

Oder Sie könnten einen Abfrageausdruck verwenden:

%Vor%

Sie sollten sich nicht auf entweder Abfrageausdrücke oder die Version der Erweiterungsmethode beschränken - es ist wichtig, beides zu verstehen, damit Sie das verwenden können, was am besten passt.

    
Jon Skeet 07.04.2013, 18:30
quelle
4

Anscheinend möchte OP das Value mit dem maximalen Id1 in Id2 :

Beispieldaten:

%Vor%

Lösung:

%Vor%     
Julián Urbano 07.04.2013 22:53
quelle
0

Falls es anderen hilft, hatte ich eine ähnliche Situation, außer dass mehrere Datensätze anstelle eines einzelnen Datensatzes zurückgegeben werden mussten.

ZB

%Vor%

Im folgenden werden die obigen vier Datensätze als zwei Listen zweier Datensätze (Aufzählungen von Aufzählungen) zurückgegeben:

%Vor%

oder

%Vor%     
tredder 31.08.2016 14:56
quelle

Tags und Links