2012-04-15 7 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

+0

생성 및 추가 :) – Tys

+1

@Arion 좋은 질문입니다. TysHTTP - 여기에 '갇혀있는'곳이 어디인지 명확하지 않습니다. 나는 그것이 어떤면에서 사물의 '역동적 인'본질이라고 생각합니다. – NSGaga

답변

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

+0

죄송합니다. 이미 다른 방법으로 수정했습니다. 나는 목록이 나를 어떻게 여기에서 도울 수 있었는지 단지 잊었다 고 생각한다. 내 코드를 List.ToArray()로 업데이트했습니다. 감사! – Tys