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 nowminus15 = DateTime.Now.AddDays(-16);
var _qAPT = db.d_events
.AsNoTracking()
.Where(w => (w.event_type != "APP_VERIFY" & w.event_type != "APP_FOOD_INT")
&& w.date_apt > nowminus15.Date
&& w.date_apt < DateTime.Today
&& (w.event_status == "APE-003" | w.event_status == "APE-001")).Select(s => new
{
s.id_person,
s.date_apt
}).AsEnumerable();
var qry = (from p in db.d_person
from q in q_uvu.Where(w => p.id_person == w.id_person).DefaultIfEmpty()
from c in _qAPT.Where(w => p.id_person == w.id_person)
where p.date_stopped == null
select new
{
p.id_person,
p.id_dream,
p.pe_surname,
p.pe_name,
p.pe_phone,
p.pe_sex,
p.pe_dob,
c.date_apt,
q.idApt
}).AsEnumerable().GroupBy(g => new
{
g.id_person,
g.id_dream,
g.pe_surname,
g.pe_name,
g.pe_sex,
g.pe_dob,
g.date_apt,
g.pe_phone,
g.idApt
})
.Select(s => new
{
s.Key.id_person,
s.Key.idApt,
s.Key.id_dream,
s.Key.pe_surname,
s.Key.pe_name,
s.Key.pe_phone,
s.Key.pe_sex,
_dataN = (s.Key.pe_dob.HasValue) ? s.Key.pe_dob.Value.ToShortDateString() : "",
_dataApt = (s.Key.date_apt.HasValue) ? s.Key.date_apt.Value.ToShortDateString() : "",
CountApt = s.Count(x => x.idApt == s.Key.idApt)
}).AsParallel().WithDegreeOfParallelism(2)
.Where(w => w.CountApt > 0);
var distinctV = qry
.GroupBy(o => o.id_person).Select(g => g.First());
dt = distinctV.ToDataTable();
dt.TableName = "lst_data";
|