Запрос LINQ для выбора по самому старому и по идентификатору

#c# #linq

#c# #linq

Вопрос:

У меня возникла эта проблема с выбором элементов. На данный момент я использую этот запрос:

 var eventQuery = dbContext.ClientEvents
                          .Where(f => f.ClientEventStatusLogs.Any(e => e.StatusId == 2))
                          .Select(TransformEvent());
  

ClientEvents это список событий, и у каждого события может быть другой список ClientEventStatusLogs . Большую часть времени этот запрос работает нормально. Но если у меня есть новое ClientEventStatusLogs в этом событии с StatusId не 2, оно все равно даст мне это ClientEvent из-за ЛЮБОГО. ClientEventStatusLogs есть столбец даты, поэтому я хотел бы проверить if StatusId == 2 только последний журнал.

Я надеюсь, вы понимаете мою проблему.

Ответ №1:

Звучит так, как будто вы хотите

 dbContext.ClientEvents.Where(
    f => f.ClientEventStatusLogs
        .OrderByDescending(e => e.Date)
        .FirstOrDefault()?.StatusId == 2)
  

Просто измените Date на любое имя свойства date.