Как я могу получить запись, значение которой является максимальным - PullRequest
0 голосов
/ 23 марта 2011

У меня в таблице есть столбец с типом данных Date.Я хочу получить запись с максимальным значением даты.

Linq поддерживает Max, но возвращает само значение.Мне нужна запись, значение которой является максимальным.

Любая помощь!

Ответы [ 4 ]

6 голосов
/ 23 марта 2011

Предполагается, что Records - это коллекция вашего объекта, а столбец / свойство для получения максимального значения называется value:

var q = Records.OrderByDescending(p => p.value)
               .FirstOrDefault();
2 голосов
/ 23 марта 2011

Вы можете заказать коллекцию по дате и выбрать первый:

List<Record> records = new List<Record>();
records.OrderByDescending(record => record.Date).First();

Вы можете использовать FirstOrDefault(), чтобы не создавать исключение, когда коллекция пуста (возвращается null)

1 голос
/ 23 марта 2011

К сожалению, LINQ не имеет оператора MaxBy. Вам, вероятно, нужно упорядочить элементы по убыванию на соответствующее свойство, а затем принять первое значение:

Customer lastRegistered = db.Customers.OrderByDescending(x => x.RegistrationDate)
                                      .FirstOrDefault();

Надеемся, что SQL Server может решить, как это сделать, без действительно полной сортировки:)

В LINQ to Objects, конечно, относительно легко написать метод MaxBy - например, я разбираюсь в MoreLINQ .

0 голосов
/ 23 марта 2011

Предполагая, что «запись» ссылается на запись из таблицы в базовой базе данных, которая может эффективно обрабатывать результирующий SQL (и поддерживает максимальное агрегирование):

var q = 
    from t in thetable where t.Date == thetable.Max( d => d.Date ) select t;

Это позволит найти записи, соответствующие максимальномуДата.First() можно использовать только для захвата одного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...