列表上未定义的Or运算次数

时间:2016-07-28 07:30:52

标签: c# linq list

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

我还有另一个带有n-Filter选项的列表List<string> filters

我想要的是返回由其他List过滤的结果列表。

对于AND操作,它很容易:

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

但是如何为OR操作编码?

2 个答案:

答案 0 :(得分:2)

这样的事情对你有用

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

答案 1 :(得分:2)

在这种情况下,您可以将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