将过滤器表达式动态添加到数组中

时间:2012-04-15 14:43:57

标签: 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 };

1 个答案:

答案 0 :(得分:8)

使用List而不是Array:

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

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

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

var filterExpressionsArray = filterExpressions.ToArray();