I have this table named sample with these values in MS Sql Server:
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
Now I want to write LINQ query that result will be this:
4 2012/01/03 5:12:43 Desc4
I wrote this but it doesn't work:
List<Sample> q = (from n in Sample.Max(T=>T.Date)).ToList();
Starting from .NET 6 MaxBy
LINQ method is available.
var result = items.MaxBy(i => i.Date);
Prior to .NET 6:
O(n):
var result = items.Aggregate((x, y) => x.Date > y.Date ? x : y);
O(n) – but iterates over the sequence twice:
var max = items.Max(i => i.Date);
var result = items.First(i => i.Date == max);
O(n log n):
var result = items.OrderByDescending(i => i.Date).First();