2011-01-14 15 views
2

Wenn ich zu schreiben, wie folgt ...Linq mit dem Wert Max Datum

var latest = _records.OrderByDescending(x => x.Date).First(); 

Ist dies der Bestellung den kompletten Satz erhalten Datensatz SQL? Oder ist Linq clever genug, um herauszufinden, dass Sie nur nach dem maximalen Wert suchen? Gibt es eine effizientere Möglichkeit, das Obige zu schreiben?

+0

Warum öffnen Sie nicht den SQL Profiler, erstellen Sie eine neue Ablaufverfolgung und verfolgen Sie die SQL-Befehle. Sie können sehen, welche SQL-Anweisungen oder Anweisungen aufgerufen werden. Ich kenne die Antwort selbst nicht, also ist das der Ansatz, den ich nehmen würde. – Andrew

Antwort

2

Ja, LINQ to SQL ist intelligent genug, um die Arbeit auf der Datenbankseite zu erledigen. Ihr Snippet führt zu SQL wie SELECT TOP (1) ... ORDER BY ....

(Dies setzt voraus, dass in Ihrem Snippet _records stellt einen System.Data.Linq.Table<T> oder etwas IQueryable, etc.)

Soweit der optimale Weg, um die Abfrage zu schreiben, könnten Sie FirstOrDefault() zu prüfen, ob es möglich ist, Ihre Tabelle wird nicht enthalten alle Datensätze, in diesem Fall wird First() eine Ausnahme auslösen.