【发布时间】:2018-01-26 17:27:22
【问题描述】:
我有一个集合,我想以编程方式将 OR 条件添加到 linq 查询。我知道如何添加 AND 条件,如下所示:
var mySet = SomeFactory.GetData();
foreach(var nameFilter in nameFilters)
{
mySet = mySet.Where(item => item.Name == nameFilter);
}
foreach(var ageFilter in ageFilters)
{
mySet = mySet.Where(item => item.Age == ageFilter)
}
但是,如果我希望这些是 OR 条件而不是“AND”在一起,我该怎么做? IE。如果我知道我将永远拥有这两者,而不是不同值的数组,我可以这样做:
mySet.Where(item => item.Name == nameFilter[0] || item.Name == nameFilter[1] ... || item.Age == ageFilter[0] || item.Age == ageFilter[1] || ...);
TL;DR:我希望能够将未知数量的布尔检查链接到使用 OR 语句评估的单个表达式中。例如,如果我有一个名为 Mary 或 Jim 的人的交叉引用,他们是 32 岁或 51 岁。
【问题讨论】:
-
什么是nameFilter?单个值、逗号分隔值等?
-
它是一个字符串...抱歉这个例子太可怕了。让我调整一下问题