我正在寻找使用LINQ来做多个类似于集合的条件
IEnumerable<Object> items;
items.Where(p => p.FirstName = "John");
items.Where(p => p.LastName = "Smith");
Run Code Online (Sandbox Code Playgroud)
除了没有多个AND条件(如本例所示),我想要有多个OR条件.
编辑 对不起,澄清我不知道我将有多少这些条件
items.Where(p => p.FirstName = "John" || p => p.LastName = "Smith")
Run Code Online (Sandbox Code Playgroud)
不行.
基本上,这是我正在尝试做的事情:
foreach(var name in names)
{
items = items.Where(p => p.Name == name);
}
Run Code Online (Sandbox Code Playgroud)
as-*_*cii 13
假设您要编写实现关键字样式搜索的LINQ to SQL或Entity Framework查询.换句话说,一个返回行描述包含一组或全部给定关键字的行的查询......
理想的方法是动态构造一个执行基于或的谓词的lambda表达式树.
在推动您手动构建表达式树的所有事情中,动态谓词的需求是典型业务应用程序中最常见的.幸运的是,可以编写一组简单且可重用的扩展方法,从根本上简化此任务.这是我们PredicateBuilder类的作用......
Jay*_*Jay 10
您可以使用.Union()返回满足任何条件的结果.
var results = items.Where(p => p.FirstName == "John")
.Union(items.Where(p => p.LastName == "Smith"));
Run Code Online (Sandbox Code Playgroud)
这不如使用||操作员.从您的编辑中不清楚为什么这不起作用.
听起来你的名字白名单只在运行时才知道.也许尝试这个:
string[] names = new string[] {"John", "foo", "bar"};
var matching = items.Where(x => names.Contains(x.Name));
Run Code Online (Sandbox Code Playgroud)