c# - LINQ query structure with if statement? -
i have full linq query built out. need 1 query run if user manager/team lead , separate query run if not. queries similar.
manager/teamleads see everything. others see certified for.
var model = (from d in department join f in db.ipacs_function on d.departmentid equals f.departmentid join pg in db.ipacs_process on f.functionid equals pg.functionid join sop in db.ipacs_procedure on pg.processid equals sop.processid // non-manager/teamlead portion join cert in db.ipacs_certification on sop.procedureid equals cert.procedureid join procdoc in db.ipacs_proceduredocs on sop.procedureid equals procdoc.procedureid join doc in db.ipacs_document on procdoc.documentid equals doc.documentid cert.adusername == curruser && cert.certifieddate > doc.dateapproved // end non-manager/team lead select new ipacs_dt_masterlist { departmentid = d.departmentid, functionid = f.functionid, processid = pg.processid, procedureid = sop.procedureid, departmentname = d.name, functionname = f.name, processname = pg.name, procedurename = sop.name, owner = sop.owner, automated = (bool)sop.automated });
is trying above possible without creating 2 separate var model =
statements?
why not create query, , if not teamleader add additional join/where clauses before query sent data source
ie:
var query = (from d in department join f in db.ipacs_function on d.departmentid equals f.departmentid join pg in db.ipacs_process on f.functionid equals pg.functionid join sop in db.ipacs_procedure on pg.processid equals sop.processid select new {d, f, pg, sop}); if (!teamleader){ query = x in query // non-manager/teamlead portion join cert in db.ipacs_certification on x.sop.procedureid equals cert.procedureid join procdoc in db.ipacs_proceduredocs on x.sop.procedureid equals procdoc.procedureid join doc in db.ipacs_document on procdoc.documentid equals doc.documentid cert.adusername == curruser && cert.certifieddate > doc.dateapproved // end non-manager/team lead select x; } var model = (from x in query select new ipacs_dt_masterlist { departmentid = x.d.departmentid, functionid = x.f.functionid, processid = x.pg.processid, procedureid = x.sop.procedureid, departmentname = x.d.name, functionname = x.f.name, processname = x.pg.name, procedurename = x.sop.name, owner = x.sop.owner, automated = (bool)x.sop.automated });
Comments
Post a Comment