2012-02-01 4 views
1

여러 항목의 목록을 필터링하려고합니다. 목록 컬렉션을 통해 반복하고 레코드를 필터링 할 수 있다는 것을 알고 있습니다. 더 좋은 방법이 있습니까?여러 기준에 대한 목록 필터링

내 첫 번째 기준은 colA != “X”이고 colA == “Y” 인 경우이 유형의 colB 값만 확인하십시오.

나는 "X"와 if ColA == “Y” && colB == “T” (I 만 if ColA == “Y”) 내가 이것을 쓸 수 아니다 COLB 값을 확인합니다.

을 콜라 == "X"다음 허용하지 않는 기본적으로 경우를 제외하고 콜라의 모든 값을 허용해야 콜라 == "Y"이라면 COLB 값 및 필터 값에 따라 확인. 콜라 모든 값의 나머지를 허용.

Accounts = Accounts.Where(acc => acc.ColA != “X” || ??).ToArray(); 

답변

2

해야비슷해 귀하의 질문을 정확하게 이해하고있는 경우. 그것은 단지 여기서 x 수 있도록

Accounts 
    .Where(acc => !(acc.ColA == "X")) 
    .Where(acc => !(acc.ColA == "Y" && acc.ColB == "T")) 
    .ToArray(); 
+0

32bitkid - 멋진, 멋진 답변! 그것은 일했다. 대단히 감사합니다. – user228777

1
string columnBValue = "T"; 
Accounts = Accounts.Where(acc => 
         acc.ColA != “X” 
         && 
         (x.ColA != "Y" || 
         (x.ColA == "Y" && x.ColB == columnBValue))) 
        .ToArray(); 
+0

그냥 업데이트, 나는 이미 시도 위의 게시물에 말했듯이 – sll

+0

없음이 작동하지 않습니다 그것을 확인하지 :

Accounts.Where(acc => !(acc.ColA == "X" || (acc.ColA == "Y" && acc.ColB == "T"))).ToArray(); 

그러나,이 더 읽을 생각 .ColA == "Y"&& x.ColB == columnBValue 다른 모든 ColA 값은 무시하고 있습니다. 원하지 않는 값입니다. X를 제외한 모든 colA 값을 원하고 값이 Y이면 추가 기준을 확인하십시오. 그 값을 선택하지 마십시오. – user228777

+0

바로 가기, 마지막 버전 확인 – sll