我对LINQ比较陌生,但正在寻找一些最佳实践"关于如何处理以下问题的建议。我知道有很多方法可以解决这个问题,但是看看有经验的人会如何编写代码。
我的LINQ目前:
var company = (from c in db.RPTINQUIRies
where c.CONCOM == concom && c.LOPER == engineer
orderby c.CREATION_DATE descending
select c);
现在在这里传递的ActionResult
参数(工程师)可能是空的也可能不是。如果它是空的,我基本上想要一起删除&& C.LOPER == engineer
子句。
处理此问题的最佳方法是什么?
答案 0 :(得分:12)
听起来你只是想要:
where c.CONCOM == concom && (engineer == null || c.LOPER == engineer)
或者,您可以逐步构建查询:
var query = db.RPTINQUIRies.Where(c => c.CONCOM == concom);
if (engineer != null)
{
query = query.Where(c => c.LOPER == engineer);
}
query = query.OrderByDescending(c => c.CREATION_DATE);