2012-04-15 101 views
10

我有这个例子,它创建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

添加它们还是创建它们? – Arion 2012-04-15 14:46:54

+0

创建并添加:) – Tys 2012-04-15 14:49:18

+1

@Arion很好的问题。 TysHTTP - 目前尚不清楚你在哪里“卡住”在这里。我猜这在某种程度上是一种“动态”的事物。 – NSGaga 2012-04-15 14:49:45

回答

8

使用列表而不是数组:

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

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

,然后如果你出于某种原因,需要将列表传递给只需要一个阵列可以使用ToArray的方法( )方法:

var filterExpressionsArray = filterExpressions.ToArray(); 
+0

使用表达式,你会认为OP会知道这一点 - 但我想现在的问题,这是唯一的答案,可以在这一点上给出。 – BrokenGlass 2012-04-15 14:57:07

+0

对不起,我已经用其他方式修复了它。我想我只是忘记了列表如何能帮助我。我更新了我的代码到List.ToArray()。谢谢! – Tys 2012-04-15 15:32:12