Получить запись из списка с максимальной датой - PullRequest
0 голосов
/ 16 января 2020

У меня есть несколько записей в Списке actionHistorys, и из них я пытаюсь получить только одну запись типа MyactionHistory, которая имеет поле max createate. CreateDateTime - это поле datetimeTime.

Я пытался go некоторые искать и искать, но не смог найти решение

List<MyActionHistory> actionHistorys = oFD.GetMyActionHistoryList();  // This should have about 4 objects or records
// This is where I am confused..Not working 
MyActionHistory MaxRecord= actionHistorys.Find(p => actionHistorys.Exists(o => o.CreateDateTime ))

Ответы [ 3 ]

0 голосов
/ 21 января 2020

Благодаря @timur. Следующий фрагмент кода работал

actionHistorys.OrderByDescending(h => h.CreateDateTime).First();
0 голосов
/ 28 января 2020

Попробуйте:

MyActionHistory MaxRecord = actionHistorys.OrderBy((x) => x.CreateDateTime).LastOrDefault();

Или:

MyActionHistory MaxRecord = actionHistorys.OrderByDescending((x) => x.CreateDateTime).FirstOrDefault();
0 голосов
/ 16 января 2020

Я бы предложил использовать MoreLINQ MaxBy

usings

using System.Linq;
using System.Collections.Generic;
using MoreLinq;

code

MyActionHistory maxRecord = actionHistorys
    .MaxBy(o => o.CreateDateTime)
    .Take(1)
    .FirstOrDefault();

Это более эффективно, чем сортировка всего списка спускаясь и затем беря первый пункт. Если я правильно понимаю реализацию MaxBy и Take, это сделает один проход по списку и вернет тот, который имеет наибольшее значение (сначала с наибольшим значением, если несколько имеют одинаковое наибольшее значение).

...