2013-08-24 4 views
0

WPF에서 제품 편집 양식을 만들고 있습니다. 이 양식에는 Id, Code, Width, HeightColor의 텍스트 상자가 있습니다.람다 식 더블 필터

IdCode는 반복 할 수 없습니다, 그래서 난 내 Code_TextChanged 이벤트에서 "확인"에 대한 Code 반복을합니다.

나는 검사에 대해 다음 람다 식을 시도했다 :

// List<Product> products = …; 
if (products.Where(x => x.code.Equals(Code.Text)) 
      .Count(g => !g.id.Equals(Id.Text)) > 0) 
    CodeExist = true; 

내가 레지스터를 열 때, 그것은 참으로 CodeExist을 표시합니다, 이유를 알고하지 않습니다.

필터의 조건을 만드는 방법은 product.code.Equals(Code.Text)!product.id(Id.Text)입니까?

+0

오프 주제 : ** 1. **'items.Count (...)> 0' 대신'items.Any (...) '를 사용하십시오. 정확한 계산을 계산할 필요가 없기 때문에 더 잘 수행 할 수 있습니다. ** 2. ** 당신의 람다 함수의 매개 변수 이름에 관해서, 당신이'x'와'g'를 선택한 이유는 궁금 해서요. 단지'p' (또는'product')뿐만 아니라, 'products' 컬렉션. ** 더블 필터 ('.Where')를 원한다면, 쿼리에서 두 개의'.Where'를 간단히 연결하는 명백한 솔루션에서 당신을 막지는 못했을 것입니다. 최적 솔루션). – stakx

답변

3

"& &"(SQL의 경우 "AND"와 동일) 또는 "||" (이는 SQL에서 "OR"과 동일 함).

컬렉션의 하나 이상의 요소가 조건과 일치하면 LINQ "Any()"메서드를 사용하여 true를 반환 할 수도 있습니다.

그래서 문을 읽을 것입니다 경우 :

if(products.Any(x=>x.code.Equals(Code.Text) && !x.id.Equals(Id.Text))){ 
    CodeExists = true; 
} 

편집 : ""와 고정 사소한 오타 놓기.

+0

은 x.! id.Equals (Id.Text)입니다. 작동하지 않기 때문에 – Lai32290

+1

죄송합니다, 약간의 오타가 있습니다. "!" "x"앞에 간다. – htxryan