Ich habe eine Tabelle 'lasttraces' mit den folgenden Feldern.
Id, AccountId, Version, DownloadNo, Date
Die Daten sehen folgendermaßen aus:
28092|15240000|1.0.7.1782|2009040004731|2009-01-20 13:10:22.000
28094|61615000|1.0.7.1782|2009040007696|2009-01-20 13:11:38.000
28095|95317000|1.0.7.1782|2009040007695|2009-01-20 13:10:18.000
28101|15240000|1.0.7.1782|2009040004740|2009-01-20 14:10:22.000
28103|61615000|1.0.7.1782|2009040007690|2009-01-20 14:11:38.000
28104|95317000|1.0.7.1782|2009040007710|2009-01-20 14:10:18.000
Wie kann ich in LINQ to SQL von jeder AccountId (die mit dem höchsten Datum) nur den letzten Lasttrace erhalten?
Wenn Sie nur das letzte Datum für jedes Konto möchten, verwenden Sie Folgendes:
var q = from n in table
group n by n.AccountId into g
select new {AccountId = g.Key, Date = g.Max(t=>t.Date)};
Wenn Sie den gesamten Datensatz möchten:
var q = from n in table
group n by n.AccountId into g
select g.OrderByDescending(t=>t.Date).FirstOrDefault();
Hier ist eine einfache Möglichkeit, dies zu tun
var lastPlayerControlCommand = this.ObjectContext.PlayerControlCommands
.Where(c => c.PlayerID == player.ID)
.OrderByDescending(t=>t.CreationTime)
.FirstOrDefault();
Schauen Sie sich auch diesen tollen LINQ-Ort an - LINQ to SQL Samples
Wenn Sie die ganze Aufzeichnung wollen, ist hier ein Lambda-Weg:
var q = _context
.lasttraces
.GroupBy(s => s.AccountId)
.Select(s => s.OrderByDescending(x => x.Date).FirstOrDefault());
Es könnte so etwas sein wie:
var qry = from t in db.Lasttraces
group t by t.AccountId into g
orderby t.Date
select new { g.AccountId, Date = g.Max(e => e.Date) };
Gehen Sie einen einfachen Weg, um dies zu tun: -
Erstellt eine Klasse für folgende Informationen
Gehen Sie zur Liste der Sites, die in einem ArrayList-Objekt gespeichert sind. Und folgende Abfrage ausgeführt, um es in absteigender Reihenfolge nach Ebene zu sortieren.
var query = from MyClass object in objCollection
orderby object.Level descending
select object
Nachdem ich die Auflistung in absteigender Reihenfolge sortiert hatte, schrieb ich den folgenden Code, um das Objekt zu erhalten, das in der obersten Zeile enthalten ist
MyClass topObject = query.FirstRow<MyClass>()
Dies wirkte wie ein Zauber.