我知道一种典型的方式是这样的:
IQueryable query = from staff in dataContext.Staffs;
if(name1 != null)
{
query = from staff in query where (staff.name == name1);
}
Run Code Online (Sandbox Code Playgroud)
但是,从我们从其他开发人员手中接过的程序中,我们看到了这样的代码:
IQueryable query = from staff in dataContext.Staffs;
query = from staff in query where (name1 == null || staff.name == name1);
Run Code Online (Sandbox Code Playgroud)
如果这是一个普通的SQL语句,我肯定会说第二个是不好的做法.因为当name1为null时,它会向查询添加无意义的where子句.
但我是LINQ的新手,所以我不确定LINQ是否有所不同?