Any()接受一个Func函数,我如何动态地为它建立过滤器?即:
var filter = () a=> a.Text == "ok";//add the first filter
if (flag)
filter += () a=> a.ID == 5;//add the second filter << obviously this doesn't work.
list.Any(filter);我还看到过组合Expression>列表的代码,但由于不知道如何将其转换为toFunc,因此无法正常工作
任何帮助都将不胜感激。
发布于 2013-04-26 10:30:15
您可以通过调用当前滤镜中的其他滤镜来编写滤镜,如下所示:
var input = new[] {"quick", "brown", "fox", "jumps"};
Func<string,bool> filter1 = a => a == "quick";
Func<string,bool> filter2 = a => filter1(a) || a.Length == 3;
foreach (var s in input.Where(filter2)) {
Console.WriteLine(s);
}这是打印
quick
foxDemo on ideone。
您可以对任何基于谓词的LINQ函数使用相同的方法,包括Any
if (input.Any(filter2)) {
...
}https://stackoverflow.com/questions/16227743
复制相似问题