Динамическое добавление выражений фильтра в массив
У меня есть этот пример, который создает 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
Используйте список вместо массива:
var filterExpressions = new List<Expression<Func<Product, bool>>>
{ filter1, filter2, filter3 };
filterExpressions.Add(c => c.Name.StartsWith("J"));
И если вам по какой-то причине нужно передать список методу, который принимает только массив, вы можете использовать метод ToArray():
var filterExpressionsArray = filterExpressions.ToArray();