2012-02-04 12 views
20

mam tej tabeli o nazwie próbki z tymi wartościami w MS SQL Server:max rekord data w LINQ

ID Date Description 
1 2012/01/02 5:12:43 Desc1 
2 2012/01/02 5:12:48 Desc2 
3 2012/01/03 5:12:41 Desc3 
4 2012/01/03 5:12:43 Desc4 

Teraz chcę napisać LINQ kwerendy, że wynik będzie tak:

4 2012/01/03 5:12:43 Desc4 

I napisałem to, ale to nie działa:

List<Sample> q = (from n in Sample.Max(T=>T.Date)).ToList(); 
+0

gdzie jest twój 'wybierz'? – Tigran

Odpowiedz

37

użyć:

var result = Sample.OrderByDescending(t => t.Date).First(); 
2
List<Sample> q = Sample.OrderByDescending(T=>T.Date).Take(1).ToList(); 

Ale myślę, że chcesz

Sample q = Sample.OrderByDescending(T=>T.Date).FirstOrDefault(); 
17

Aby uzyskać maksymalną Sample wartość według daty bez konieczności sortowania (co nie jest naprawdę konieczne, aby tylko uzyskać maksymalny):

var maxSample = Samples.Where(s => s.Date == Samples.Max(x => x.Date)) 
         .FirstOrDefault(); 
+0

ma to tę samą złożoność, co zaakceptowana odpowiedź, która wymaga uporządkowania, o ile rozumiem – knocte

+0

, ale jest jeszcze bardziej czytelna, domyślam się – knocte

+2

@knocte nie jest to ta sama złożoność - to jest O (n) - potrzebne są 2 podania, każde O (n) - sortowanie byłoby O (n log n), więc droższe – BrokenGlass

1
var lastInstDate = model.Max(i=>i.ScheduleDate); 

Możemy uzyskać maksymalną datę z takiego modelu.

Powiązane problemy