我有一个包含n个条目的列表。 List<MyClass> result
我还有另一个带有n-Filter选项的列表List<string> filters
我想要的是返回由其他List过滤的结果列表。
对于AND操作,它很容易:
foreach (var filter in filters)
{
results = results.Where(x => x.Result == filter);
}
但是如何为OR操作编码?
答案 0 :(得分:2)
这样的事情对你有用
results.Where(x => filters.Contains(x.Result))
答案 1 :(得分:2)
在这种情况下,您可以将Where
与Any
结合使用:
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));