gpt4 book ai didi

linq - 为 Any() 方法动态构建 LINQ 过滤器?

转载 作者:行者123 更新时间:2023-12-03 23:17:52 25 4
gpt4 key购买 nike

Any() 接受一个 Func
我怎样才能动态地建立过滤器? IE:

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> 的列表,但我没有让它起作用,因为我不知道如何将它转换为Func

任何帮助将不胜感激。

最佳答案

您可以通过调用当前过滤器中的其他过滤器来组合过滤器,如下所示:

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
fox

Demo on ideone .

您可以对 LINQ 的任何基于谓词的函数使用相同的方法,包括 Any :
if (input.Any(filter2)) {
...
}

关于linq - 为 Any() 方法动态构建 LINQ 过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227743/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com