List上未定义数量的Or操作

本文关键字:Or 操作 未定义 List | 更新日期: 2023-09-27 17:58:58

我有一个包含n个条目的列表。List<MyClass> result

我有另一个带有n过滤器选项的列表List<string> filters

我想要的是返回另一个List过滤后的结果List。

对于AND操作来说,它很简单:

foreach (var filter in filters) 
{
     results = results.Where(x => x.Result == filter);
}

但是如何为OR运算编码呢?

List上未定义数量的Or操作

在这种情况下,您可以将WhereAny结合使用:

results = results.Where(x => filters.Any(f => f == x.Result));

https://msdn.microsoft.com/library/bb534972(v=vs.110).aspx

其他方式:

//Contains, see DAXaholic's post
results = results.Where(x => filters.Contains(x.Result));

https://msdn.microsoft.com/library/bhkz42b3(v=vs.110).aspx

//List Extension method 'Exists'
results = results.Where(x => filters.Exists(f => f == x.Result));

https://msdn.microsoft.com/library/bfed8bca(v=vs.110).aspx

这样的东西应该适用于

results.Where(x => filters.Contains(x.Result))