2010-04-02 6 views

답변

11

당신이 할 필요가 : : 3 "또는"1 또는 2 또는 3 "이 메시지를 반환

var results = entityCollection.Where(entity => entity.Property1 == 1 || entity.Property1 == 2 || entity.Property1 == 3); 
+0

나는 두려웠다. 내가하고 싶은 것은 테이블에 대한 쿼리가 실행될 때마다 동일한 조건이 발생하여 테이블을 칠 때마다 위의 코드를 작성할 필요가 없기 때문입니다. –

+0

@Blakewell : 재사용 할 수 있도록 유틸리티 클래스에 쿼리를 넣으십시오. –

+1

@ Reduce Copsey :'entity =>'가 누락 되었습니까? –

3

시도하지 않았지만 contains을 사용해보세요. 아니 성능 확실하지만, 코드는 작은 : http://www.albahari.com/nutshell/predicatebuilder.aspx

그것은 좀 더 고급이지만, 동적 조건을 체인해야하는 경우가 가장 좋은 건입니다 :

int[] vals = new int[] { 1, 2, 3, 4 }; 
var results = entityCollection.Where(entity => vals.Contains(entity.Property1)); 
+1

'Contains'는 아직 릴리즈되지 않은 EF 4에서만 지원됩니다 (.Net 4로 12 번째로 나옵니다). MS의 웹 사이트에 공개 후보가 있습니다. –

+0

그것에 대해 생각조차하지 않았다. 나는 잠시 동안 EF 4를 사용하여 정상적으로 보였다. –

10

또한 술어 빌더를 체크 아웃해야 .

foreach (string keyword in keywords) 
    { 
    string temp = keyword; 
    predicate = predicate.Or (p => p.Description.Contains (temp)); 
    } 
관련 문제