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

Popular posts from this blog

php - Calling a template part from a post -

Firefox SVG shape not printing when it has stroke -

How to mention the localhost in android -