如果LINQ中的典型值为null,如何跳过where语句?这适用于搜索功能,其中用户输入空值而不是LINQ将不会对该列执行查询。
我记得我看到了直接的功能,但我忘了它是什么条款。给出的示例不要求为每个where语句显式检查null。
像这样的东西。但我忘了应该替换where子句的功能。 WhereIf? WhereIff?
db.Table1.Where(x=> x.Column1 == value1)
.Where(x => x.Column2 == value2)
答案 0 :(得分:1)
WhereIf应该这样做。看看这里:
这可以帮助您:http://extensionmethod.net/csharp/ienumerable-t/whereif
也看看这个答案:How to use whereif in LINQ
将数据表更改为IQueryable:
db.Table1.AsEnumerable()。AsQueryable已()...
答案 1 :(得分:0)
如果出现条件,您不希望对发送到数据库的查询应用过滤器,那么请不要在其上调用Where。
var query = db.Table1.AsQueryable();
if (value1 != null)
query = query.Where(x=> x.Column1 == value1);
if (value2 != null)
query = query.Where(x=> x.Column2 == value2);
return query.ToList();
如果value
是字符串,则可以测试string.IsNullOrEmpty(value)