2012-04-15 18 views
10

Mam ten przykład, który tworzy 3 wyrażenia i dodaje je do jednej tablicy wyrażenia. Teraz chciałbym wiedzieć, jak zrobić to samo w pętli, dla nieznanej liczby wyrażeń.Dynamiczne dodawanie wyrażeń filtru do tablicy

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

Dodać je lub utworzyć? – Arion

+0

Tworzenie i dodawanie :) – Tys

+1

@Arion Dobre pytanie. TysHTTP - Nie jest jasne, gdzie jest "utknięcie" tutaj. Zgaduję, że jest to "dynamiczna" natura rzeczy. – NSGaga

Odpowiedz

8

użycie listy zamiast tablicy:

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

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

a następnie, jeśli z jakiegoś powodu trzeba przekazać listę do metody, która tylko pobiera tablicę można użyć ToArray () metoda:

var filterExpressionsArray = filterExpressions.ToArray(); 
+0

Pracując z wyrażeniami, które sądzisz, OP będzie o tym wiedział, ale wydaje mi się, że biorąc pod uwagę pytanie, jest to jedyna odpowiedź, jaka może być udzielona w tym momencie. – BrokenGlass

+0

Przepraszam, już to naprawiłem w inny sposób. Chyba po prostu zapomniałem, jak lista może mi pomóc. Zaktualizowałem swój kod do List.ToArray(). Dzięki! – Tys

Powiązane problemy