LINQ: die Auswahl von Elementen aus einer Liste (Group By/Select/Sum & Max!)
Nur immer meinen Kopf um Linq und mit viel Spaß! Kann irgend jemand Hilfe mir mit einem query:
Ich habe eine Liste von Daten:
Schlüssel Wert Aaa-12 AaA 10 AAa 5 BBB 2 Bbb 1
1. Ich möchte die group by-Schlüssel.ToUpper()
2. Für jede Gruppe muss ich die Max(Wert) & Sum(Wert)
3. Für jede Gruppe möchte ich wählen Sie die Einträge
Da die Wert != Max(Wert)
das endgültige Ergebnis sollte wie folgt sein:
Key Max Total AaA-12 27 AAa-12 27 Bbb 2 3
Danke!
Update, eigentlich brauche ich auch, den Schlüssel aus dem Maximalen Eintrag:
Key Max Total Korrekt AaA 12 27 Aaa AAa 12 27 Aaa Bbb 2 3 BBB
- Klingt verdächtig nach Hausaufgaben.
- Oder eine interview-Frage... Hausaufgaben in der Regel nicht die "ToUpper"
- Weder chaps, Sie würde von meinem Profil sehen, dass ich bin ein wenig Vergangenheit Hausaufgaben 🙂 Und nicht wirklich ein pro-coder [mehr], just for fun 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
🙂
Ich ein bisschen wie die Frage, weil sich all die kleinen Teile (einige nur selten verwendet werden), die erforderlich sind, um die Antwort.
Durchführung mehrerer Aggregationen auf eine Gruppe, ist einfach, aber herausfordernd, wenn Sie nicht wissen, wie.
Diese Klausel nimmt alles, was vorher passiert ist und beginnt eine neue Abfrage mit dem Ziel. Ohne ihn wäre ich starten Sie eine neue Abfrage wie diese:
Es ist wichtig zu beachten, dass die
select into
- Klausel entferntkvp
undg
aus Bereich.Diese "Auspacken" des Kindes Kollektion dreht sich meine Anfrage bezüglich b ' s in einer Abfrage über einen ist. Im Gegensatz zu den Standard-Durchlaufen werden.SelectMany überladen, es lässt die Eltern (
b
) im Umfang.Vergleich eine Kind-Eigenschaft mit einem übergeordneten Eigenschaft? Entzückend. Es ist wichtig daran zu erinnern, ausbrechen
where
jederzeit Sie wollen, zu filtern, auch wenn Sie gerade gruppiert sind (es gibt keineHAVING
).