2010-01-19 4 views
1

Я пытаюсь написать оператор LINQ, который выбирает только строки в таблице с последним rundate. Например, если у меня есть таблица с колонками RunDate (DateTime) и Value (десятичное) один из способов достижения этого через SQL может выглядеть следующим образом:Совокупность в том, где предложение LINQ

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

Есть ли способ сделать это в LINQ? Спасибо

ответ

3

Если вы хотите строки:

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

Если вы просто хотите значения:

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

спасибо, что это сработало отлично ... я новичок в LINQ, если вы не могли сказать – Andrew

+0

Мы все были там в какой-то момент. Мы все не вернемся. :-) – jason

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

Я не думаю, что это то же самое ... что только будет вернуть одну запись, даже если есть несколько строк с одинаковой датой запуска. – Aaronaught

Смежные вопросы