gpt4 book ai didi

c# - LINQ:仅在值不为空时添加 where 子句

转载 作者:IT王子 更新时间:2023-10-29 04:30:08 27 4
gpt4 key购买 nike

我知道一个典型的方式是这样的:

IQueryable query = from staff in dataContext.Staffs;
if(name1 != null)
{
query = from staff in query where (staff.name == name1);
}

但是,从我们从其他开发人员那里接手的程序中,我们看到了这样的代码:

IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);

如果这是一个普通的 SQL 语句,我肯定会说第二个是不好的做法。因为它在 name1 为 null 时向查询添加了一个无意义的 where 子句。

但我是 LINQ 的新手,所以我不确定 LINQ 是否不同?

最佳答案

你可以这样写

IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 != null && staff.name == name1);

这样,如果您的第一个条件评估为 false,则不会评估您的条件的第二部分

更新:
如果你写

IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);

and name1 is null 您的条件的第二部分将不会被评估,因为 or 条件只需要一个条件返回 true

请看这个link更多详情

关于c# - LINQ:仅在值不为空时添加 where 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5787794/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com