【发布时间】:2014-11-15 09:32:00
【问题描述】:
这是我的方法:
public static IEnumerable<Answer> FilterByKeyValue(this IEnumerable<Answer> query, KeyFilterModel[] filters)
{
if (filters != null && filters.Length > 0)
{
foreach (var filter in filters)
{
foreach (var value in filter.FilterValues)
query = query.Where(f => f.RespondentEntryID.HasValue && f.RespondentEntry.Values.Any(g => g.Key.Name.Contains(filter.Key) && g.Values.Contains(value)));
}
}
return query;
}
对于我的迭代中的每个项目,我都有一个 query.Where( ... ),这是一个 AND ...,但我想在 OR 函数中使用它。
谁能帮帮我?
【问题讨论】:
-
在 or 函数中是什么意思?怎么说你的函数是and函数?
-
我认为我没有真正理解您的查询,但如果您需要编程或然后使用 ||代替 &&,无论您需要什么,您也可能希望将或 (||) 组合在一起,然后将 && 应用于该组,反之亦然
-
@KenpachiZaraki:组合 Where 的行为类似于“and”,即
Where(cond1).Where(cond2)等价于Where(cond1 && cond2)。 OP 最有可能在寻找Where(cond1 || cond2)。 -
同意 Magnus 的观点,尤其是关于其链接的公认答案:使用 PredicateBuilder,它很简单而且效果很好。使用外部库(不是 LINQ 本机功能)只是有一个小缺点
标签: c# linq expression