Вернуть все строки, имеющие максимальное значение - PullRequest
0 голосов
/ 09 сентября 2010

Я использую Entity Framework для соединения с базой данных.

У меня есть таблица (назовем это «Файл»), которая имеет несколько полей:

ID, Version, XYZ Primarkyключ основан на ID И версии.поэтому у меня может быть несколько строк с одним и тем же идентификатором, но с разной версией (и обратной).

Вопрос в следующем:

Как мне с выражением LAMBDA попросить мою Entity Framework вернутьмне всю последнюю версию "файла".

Пример: данные:

 ID;Version;Other
 1;1;YX
 1;2;YZ
 2;1;AH
 2;2;BH
 2;5;CA
 1;3;AAA

Результат:

 1;3;AAA
 2;5;CA

Спасибо!

!!Цель состоит в том, что базе данных не нужно возвращать все строки, и она вызывается только один раз, поэтому забудьте решение, такое как GetAllRows, и прочитайте всю коллекцию и сохраните только самую последнюю, или получите список всех возможных идентификаторов и получите последнийВерсия foreach в другом запросе.Спасибо!

1 Ответ

1 голос
/ 09 сентября 2010

Для этого можно использовать следующий запрос LinqToEntites:

var result = from f in myEntities.Files
             group f by f.ID into g
             select g.OrderByDescending(f => f.Version).FirstOrDefault();

Возможно, было бы более целесообразно использовать First вместо FirstOrDefault, но тогда вы получите UnsupportedException:

Метод «Первый» может использоваться только в качестве конечной операции запроса. Попробуйте использовать метод FirstOrDefault в этом случае вместо

...