Andrew Keller
Andrew Keller

Reputation: 3239

Aggregate in where clause of LINQ

I am trying to write a LINQ statement which selects only the rows in a table with the most recent rundate. For example, if I had a table with columns RunDate(datetime) and Value(decimal) one way of accomplishing this through sql might look like:

SELECT Value
FROM Table
WHERE RunDate = (SELECT MAX(RunDate) FROM Table)

Is there a way to do this in LINQ? Thank you

Upvotes: 1

Views: 1290

Answers (2)

jason
jason

Reputation: 241641

If you want the rows:

var rows = Table.Where(row => row.RunDate == Table.Max(r => r.RunDate));

If you just want the values:

var values = Table.Where(row => row.RunDate == Table.Max(r => r.RunDate))
                  .Select(row => row.Value);

Upvotes: 3

Graviton
Graviton

Reputation: 83254

Table.OrderByDescending(row=>row.RunDate).Take(1); 

Upvotes: 0

Related Questions