score:86

Accepted answer

Starting from .NET 6 MaxBy LINQ method is available.

var result = items.MaxBy(i => i.Date);

Prior to .NET 6:

O(n log n):

var result = items.OrderByDescending(i => i.Date).First();

O(n) – but iterates over the sequence twice:

var max = items.Max(i => i.Date);
var result = items.First(i => i.Date == max);

Or you can use MoreLINQ which has MaxBy method which is O(n)

score:-3

var result= Sample.OrderByDescending(k => k.ID).FirstOrDefault().Date;

This is the best way to do this

score:-2

IList<Student> studentList = new List<Student>() { 
    new Student() { StudentID = 1, StudentName = "John", Age = 18 } ,
    new Student() { StudentID = 2, StudentName = "Steve",  Age = 15 } ,
    new Student() { StudentID = 3, StudentName = "Bill",  Age = 25 } ,
    new Student() { StudentID = 4, StudentName = "Ram" , Age = 20 } ,
    new Student() { StudentID = 5, StudentName = "Ron" , Age = 19 } 
};

var orderByDescendingResult = from s in studentList
                   orderby s.StudentName descending
                   select s;

Result : Steve Ron Ram John Bill

score:1

Here's a single pass option:

var maxSample =
    Samples
        .Aggregate((x, y) => x.Date < y.Date ? y : x);

score:2

List<Sample> q = Sample.OrderByDescending(T=>T.Date).Take(1).ToList();

But I think you want

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

score:5

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

We can get max date from the model like this.

score:28

To get the maximum Sample value by date without having to sort (which is not really necessary to just get the maximum):

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

Related Query

More Query from same tag