c# - 将过滤器表达式动态添加到数组

标签 c# linq

我有这个示例,它创建了 3 个表达式并将它们添加到一个表达式数组中。 现在我想知道如何在循环中为未知数量的表达式做同样的事情。

Expression<Func<Product, bool>> filter1 = c => c.City.StartsWith("S");
Expression<Func<Product, bool>> filter2 = c => c.City.StartsWith("M");
Expression<Func<Product, bool>> filter3 = c => c.ContactTitle == "Owner";

Expression<Func<Product, bool>>[] filterExpressions = new Expression<Func<Product, bool>>[] { filter1, filter2, filter3 };

最佳答案

使用列表而不是数组:

var filterExpressions = new List<Expression<Func<Product, bool>>>
    { filter1, filter2, filter3 };

filterExpressions.Add(c => c.Name.StartsWith("J"));

然后,如果出于某种原因,您需要将列表传递给只接受数组的方法,您可以使用 ToArray() 方法:

var filterExpressionsArray = filterExpressions.ToArray();

关于c# - 将过滤器表达式动态添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10163015/

相关文章:

c# - Azure Signalr +Azure function + wpf 客户端 - 如何使用 azure function 和自托管 Azure SignalR App 拥有 wpf 客户端应用程序

C#串口问题——太简单了,不过不行

.net - 当我们对子列表应用条件时,如何过滤父列表<>?

c# - 将 Linq-To-SQL 列表导入 MongoDB

c# - 访问 IEnumerable<T> 子级

c# - 指定的资源名称长度不在允许的限制范围内 Azure Blob 存储

c# - 使用反射查找弃用

c# - DDD 上的免费视频(截屏视频、网络广播...)培训

sql - 如何避免在 WHERE 查询中为 Unicode 字符串添加 'N' 前缀?

c# - 为什么在将数据源传递给 BindingSource 之前对其调用 .OrderBy 时,我的数据源的类型似乎发生了变化?