LINQ和C# - 处理可能为null的参数

Tri*_*ene 1 c# linq

我对LINQ相对较新,但正在寻找一些关于如何处理以下内容的"最佳实践"建议.我知道有很多方法可以解决这个问题,但是看看有经验的人会如何编写代码.

我的LINQ目前:

        var company = (from c in db.RPTINQUIRies
                      where c.CONCOM == concom && c.LOPER == engineer
                      orderby c.CREATION_DATE descending
                      select c);
Run Code Online (Sandbox Code Playgroud)

现在,ActionResult在这里(工程师)传递的参数可能是空的也可能不是.如果它是空的,我基本上想要一起删除该&& C.LOPER == engineer条款.

处理这个问题的最佳方法是什么?

Jon*_*eet 12

听起来你只是想要:

where c.CONCOM == concom && (engineer == null || c.LOPER == engineer)
Run Code Online (Sandbox Code Playgroud)

或者,您可以逐步构建查询:

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);
Run Code Online (Sandbox Code Playgroud)