var _ex = db.d_events_att .AsNoTracking() .Where(w => w.domain == "A_EXAMS_VLOAD" && w.vn2.HasValue) .Select(s => new { data = s.d_event.date_apt_exe, s.id_person, s.vn2 }).AsEnumerable() .Where(w => w.data.HasValue) .GroupBy(g => g.id_person) .Select(s => new { id_person = s.Key, dati = s.MaxBy(x => x.data) }).ToList(); //other method but slower var _ex= db.d_events.Join(db.d_events_att.AsNoTracking(), ev => ev.id_event, att => att.id_event, (ev, att) => new { ev, att }) .Where(w => w.att.domain == "A_EXAMS_VLOAD" && w.ev.date_apt_exe != null && w.att.vn2 != null) .ToList() .GroupBy(p => p.ev.id_person) .Select(s => new { id_person = s.Key, dati = s.MaxBy(p => p.ev.date_apt_exe) }).ToList();