Benutzer mit den meisten Antworten
LINQ und Group By

Frage
-
Hallo Leute,
ich habe folgende Tabelle:ID, Name, Wert
1, A , 5
2, A , 6
3, B , 8
4, C , 5
5, C , 5mit:
result = From M In tabelle Group M By M.Name Into Max(M.Wert)
erhalte ich:
A , 6
B , 8
C , 5
soweit ok aber ich möchte auch die ID von dem Datensatz wissen, der den Max-Wert enthält
so sollte es aussehen:
2, A , 6
3, B , 8
4, C , 5
(im Fall von C könnte die ID 4 oder 5 sein, was aber egal wäre)
Vielen Dank im Voraus
Christian Tauschek
Christian Tauschek
Antworten
-
Hi Christian,
eine Möglichkeit zu Deiner Frage könnte so aussehen:Dim result = From M In tabelle Order By M.Name, M.Wert Descending Group By M.Name Into FirstOrDefault
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks- Als Antwort markiert Christian Tauschek Samstag, 29. August 2015 07:48
-
Hallo Christian,
ich habe es nicht so mit der Schlüsselwort-Syntax von LINQ, daher die Methoden-Variante:
Dim result = tabelle.GroupBy(Function(x) x.Name) _ .Select(Function(x) Dim max = x.Max(Function(y) y.Wert) Return x.First(Function(y) y.Wert = max) End Function)
An sich kannst du deine GroupBy-Klausel übernehmen und lediglich das Select anhängen welches dann das Element aus der Gruppe heraus sucht, welches dem maximalen Wert entspricht.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Christian Tauschek Samstag, 29. August 2015 07:48
Alle Antworten
-
Hallo Christian,
ich habe es nicht so mit der Schlüsselwort-Syntax von LINQ, daher die Methoden-Variante:
Dim result = tabelle.GroupBy(Function(x) x.Name) _ .Select(Function(x) Dim max = x.Max(Function(y) y.Wert) Return x.First(Function(y) y.Wert = max) End Function)
An sich kannst du deine GroupBy-Klausel übernehmen und lediglich das Select anhängen welches dann das Element aus der Gruppe heraus sucht, welches dem maximalen Wert entspricht.
Tom Lambert - .NET (C#) MVP
Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets- Als Antwort markiert Christian Tauschek Samstag, 29. August 2015 07:48
-
Hi Christian,
eine Möglichkeit zu Deiner Frage könnte so aussehen:Dim result = From M In tabelle Order By M.Name, M.Wert Descending Group By M.Name Into FirstOrDefault
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks- Als Antwort markiert Christian Tauschek Samstag, 29. August 2015 07:48