LINQ lambda表达式追加或声明 [英] LINQ lambda expression append OR statement
本文介绍了LINQ lambda表达式追加或声明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如果我要追加及陈述我的查询,我可以这样做:
查询= query.Where(OBJ => obj.Id == ID);
如果(name.HasValue)
=查询query.Where(OBJ => obj.Name ==名);
和它会给我:
query.Where(OBJ => obj.Id == ID和放大器;&安培; obj.Name ==名)
我怎么能追加或声明会导致:
查询。凡(OBJ => obj.Id == ID || obj.Name ==名称)
解决方案
您不能这样做本身。但是,您可以使用 PredicateBuilder 在运行之前撰写查询,并支持OR值
VAR谓词= PredicateBuilder.False<产品及GT;();
谓语= predicate.Or(OBJ => obj.Id == ID);
如果(name.HasValue)谓词= predicate.Or(OBJ => obj.Name ==名);
返回query.Where(谓语);
If I want to append a AND statement to my query, I can do:
query = query.Where(obj=>obj.Id == id);
if(name.HasValue)
query = query.Where(obj=>obj.Name == name);
and it will give me:
query.Where(obj=>obj.Id == id && obj.Name == name)
How can I append a OR statement that will result in:
query.Where(obj=>obj.Id == id || obj.Name == name)
解决方案
You can't do it natively. However, you can use PredicateBuilder to compose the query before you run it, and it supports ORs.
var predicate = PredicateBuilder.False<Product>();
predicate = predicate.Or (obj=>obj.Id == id);
if(name.HasValue) predicate = predicate.Or (obj=>obj.Name == name);
return query.Where(predicate);
这篇关于LINQ lambda表达式追加或声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文