Фильтрация в LINQ запросах

Есть LinQ запрос

var info = (from f in db.Flats
           join i in db.Indicators on f.IndicatorId equals i.Number
           join d in db.Datas on f.IndicatorId equals d.IndicatorId
           select new MainInfoViewModel
           {
               Address = f.Address,
               Indicator = i.Number,
               Date = d.Date,
               Value = d.Value
           }).ToList();

Как можно добавить условие для фильтрации списка, например для info с одинаковыми Indicator выводить то у которого больше Date? https://prnt.sc/tyqkwv Просмотр списка всех квартир с показаниями, актуальными на сегодня.


Ответы (2 шт):

Автор решения: motpfofs
var infos = this.db.Flat.Select(f => 
    new MainInfoViewModel()
    {
        Address = f.Address, 
        Indicator = f.Indicators.OrederByDescending(i => i.DateLastCheck).FirstOrDefault().Number,
        Date = db.Data.FirstOrDefault(d => d.IndicatorId == f.Indicators.OrederByDescending(i => i.DateLastCheck).FirstOrDefault().Number).Date,
        Value = db.Data.FirstOrDefault(d => d.IndicatorId == f.Indicators.OrederByDescending(i => i.DateLastCheck).FirstOrDefault().Number).Value
    });
→ Ссылка
Автор решения: ИВанов Иван
        info = info.GroupBy(i => i.Indicator)
                   .Select(i => i.Last())
                   .ToList();
→ Ссылка