我对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子句。

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

最佳答案

听起来您只想要:

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);

关于c# - LINQ和C#-处理可能为空的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29012130/

10-12 07:16