Code |
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 datetmp158 = DateTime.Now.AddDays(-60);
var qry = (from p in db.d_person
from s in db.d_status.Where(w => w.id_person == p.id_person && w.domain == "TARV" && w.active == true)
from q in q_uvu.Where(w => p.id_person == w.id_person).DefaultIfEmpty()
from e in db.d_events_att.Where(w => p.id_person == w.id_person && w.domain == "APP_DRUGS")
from far in db.Farmaci.Where(w => e.vt4 == w.idFarmaco)
from comp in db.Composti.Where(w => far.idComposto == w.idComposto)
where
p.date_stopped == null
&& s.status == "TARV_SI"
&& e.date_event > datetmp158
&& comp.ARV == true
group new { q, e } by new
{
p.id_person,
p.id_dream,
p.pe_surname,
p.pe_name,
p.pe_sex,
p.pe_dob,
q.idApt
} into g
where g.Average(p => p.e.vn8) < 95
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,
AvgPercA = (System.Double?)g.Average(p => p.e.vn8)
}).DistinctBy(d => d.id_person).ToDataTable(); //.AsEnumerable().Distinct().ToDataTable();
dt = qry;
dt.TableName = "lst_data";
|