c# - How to do optional parameters in LINQ? -
here i'm trying do:
(dc.det_cases.where(c => c.productid == pl.productid && oldtor == false ? c.oldtor == oldtor : && (productlinename.toint() == 0 || productlinename.toint() == c.productlineid) && (productcategory.toint() == 0 || productcategory.toint() == c.productcategoryid) && (issuetype.toint() == 0 || issuetype.toint() == c.issuetypeid) && (issue.toint() == 0 || issue.toint() == c.issueid) ) .firstordefault() != null) this line i'm trying do.
oldtor == false ? c.oldtor == oldtor : inside where linq statement. if value false compare value. if not, ignore it.
the easiest way set other option true.
ie: !oldtor ? c.oldtor == oldtor : true
this means if oldtor false, want compare oldtor's, otherwise, keep evaluating rest of expression.
as aside, split each part of massive .where() boolean comparison individual .where() statements. improve readability , comprehension of linq.
dc.det_cases .where(c => c.productid == pl.productid) .where(c => !oldtor ? c.oldtor == oldtor : true) .where(c => productlinename.toint() == 0 || productlinename.toint() == c.productlineid) .where(c => productcategory.toint() == 0 || productcategory.toint() == c.productcategoryid) .where(c => issuetype.toint() == 0 || issuetype.toint() == c.issuetypeid) .where(c => issue.toint() == 0 || issue.toint() == c.issueid) .firstordefault() != null; this makes clear if oldtor false want compare, otherwise, pass statement (true).
Comments
Post a Comment