Hallo,
ich komme irgendwie nicht weiter.
Ich möchte ein Subselect mit Linq realisieren aber irgendwie gelingt mir das nicht richtig.
Mein Tabellenschema ist folgendermaßen aufgebaut.
public class Test
{
public int Id { get; set; }
public DateTime TimeStamp { get; set; }
public String Label { get; set; }
}
Daten könnten so aussehen:
1 - 2012-12-31 - Text1
2 - 2013-01-21 - Text2
1 - 2013-01-21 - Text1
Ich benötige immer nur von einer Id, die Zeile mit dem größten Timstamp.
In SQL würde ich folgendes schreiben:
Select a.*
From test a
Where a.TimeStamp = (Select Max(b.TimeStamp) From test b Where b.id = a.id)
Ich benutze das EF.
Hallo Schaffi
Das könnte etwa so aussehen:
var query = DeineDaten
.GroupBy(x => x.Id,
(k, g) => g.Aggregate((a, x) => (x.TimeStamp > a.TimeStamp ) ? x : a));
Es gibt ein cooles Tool namens LINQ PAD, schau es Dir doch mal an, damit kann man spielend zum Ergebniss finden 😉
Beste Grüsse
Diräkt
Edit :
ggf. einfacher wäre (ohne Aggregate):
var result= yourData.GroupBy(x => x.Id)
.Select(y => y.OrderByDescending(z => z.TimeStamp).First()).ToList();