LINQ: Auswählen von Elementen aus einer Liste (Gruppieren nach / Auswählen / Summe und Max!)

8

Ich bin nur mit Linq beschäftigt und habe viel Spaß! Kann mir jemand bei einer Abfrage dabei helfen:
Ich habe eine Liste von Daten:

%Vor% 1. Ich möchte nach Key.ToUpper () gruppieren 2. Für jede Gruppe brauche ich den Max (Value) & amp; Summe (Wert)
3. Für jede Gruppe möchte ich die Einträge auswählen Da ist der Wert! = Max (Wert)
Das Endergebnis sollte wie folgt aussehen:
    Key  Value
    Aaa  12
    AaA  10
    AAa  5
    BBB  2
    Bbb  1
Vielen Dank!

Update, eigentlich brauche ich auch den Key vom Maximum Eintrag:

%Vor%     
Andrew White 04.06.2010, 00:56
quelle

1 Antwort

16

:)

%Vor%

Ich mag die Frage irgendwie wegen all der kleinen Teile (einige werden selten benutzt), die benötigt werden, um die Antwort zu geben.

%Vor%

Das Ausführen mehrerer Aggregationen in einer Gruppe ist unkompliziert, stellt jedoch eine Herausforderung dar, wenn Sie nicht wissen, wie.

%Vor%

Diese Klausel übernimmt alles, was vorher geschehen ist, und startet eine neue Abfrage mit dem Ziel. Ohne es müsste ich eine neue Abfrage wie folgt starten:

%Vor%

Es ist wichtig zu beachten, dass die select into -Klausel kvp und g aus dem Bereich entfernt.

%Vor%

Dieses "Entpacken" der Kindsammlung macht meine Abfrage von b's zu einer Frage nach a's. Im Gegensatz zur standardmäßigen Enumerable.SelectMany-Überladung wird das übergeordnete Element ( b ) im Gültigkeitsbereich beibehalten.

%Vor%

Vergleiche die Eigenschaft eines Kindes mit der Eigenschaft eines Elternteils? Herrlich. Es ist wichtig zu beachten, dass where immer dann ausbrechen kann, wenn Sie filtern möchten, selbst wenn Sie nur gruppiert haben (es gibt kein HAVING ).

    
Amy B 04.06.2010, 01:06
quelle

Tags und Links