var q_uvu = db.d_events .AsNoTracking() .Where(x => x.event_type.ToLower() == "app_verify" && x.date_apt_exe == null) .Select(s => new { s.id_person, idApt = (string.IsNullOrEmpty(s.id_event) ? "" : "!") }).Distinct(); DateTime datetmp030 = DateTime.Now.AddDays(-30); var qrye030 = (from p in db.d_person from q in q_uvu.Where(w => p.id_person == w.id_person).DefaultIfEmpty() from s in db.d_status.Where(w => w.id_person == p.id_person && w.domain == "TARV" && w.active == true) from e in db.d_events.Where(w => p.id_person == w.id_person & w.event_type == "VISIT") from pre in db.d_events_att.Where(w => e.id_event == w.id_event & w.domain == "A_DPRES") from far in db.Farmaci.Where(w => pre.vt5 == w.idFarmaco) from comp in db.Composti.Where(w => far.idComposto == w.idComposto) where p.date_stopped == null && s.status == "TARV_SI" && comp.ARV == true select new { p.id_person, q.idApt, p.id_dream, p.pe_surname, p.pe_name, p.pe_sex, p.pe_dob, e.date_apt_exe, giorni = pre.vn2 }).ToList(); var qry = (from a in qrye030 group a by new { a.id_person, a.id_dream, a.pe_surname, a.pe_name, a.pe_sex, a.pe_dob, a.idApt } into g where g.Max(p => p.date_apt_exe.Value.AddDays(Convert.ToDouble(p.giorni))) < datetmp030 select new { g.Key.id_person, g.Key.idApt, g.Key.id_dream, g.Key.pe_surname, g.Key.pe_name, g.Key.pe_sex, g.Key.pe_dob, cop_tarv = (DateTime?)g.Max(p => p.date_apt_exe.Value.AddDays(Convert.ToDouble(p.giorni))) }).ToDataTable(); dt = qry; dt.TableName = "lst_data";