2016-08-31 11 views
-3

두 개의 컬렉션 ProdList<Product, int>RuleList<Product, int>에 제품 및 카운트 목록이 포함되어 있습니다.컬렉션에 컬렉션이 포함되어 있는지 확인하는 방법

ProdList 수집 에서 partici RuleList 모든 항목은 내가

bool a= ProdList.All(x => RuleList.Contains(x)); 

으로 해봤지만 작동하지 않을 경우 내가 얻는 방법에 대해 설명합니다.

+0

당신은'Equals'의 메소드를 오버라이드 (override) 다음 코드는 ProdList하고 무엇 – RafaelC

+0

작동합니다 규칙 목록? Dictonaries 내가 가정? 제품 또는 int와 일치 시키려고합니까? 아니면 둘다? – SledgeHammer

+0

@SledgeHammer 모두 –

답변

1

작동하지 않는 이유 Contains 방법은 Equals 재정의하고 그렇지 않은 경우 항목의 GetHashCode을 사용하기 때문이다 object의 것들이다.

솔루션 :

  1. 무시 개체의 EqualsGetHashCode
  2. 사용 Any 대신 Contains :

    var result = ProdList.All(x => RuleList.Any(y => x.Product.Equals(y.Product) && 
                   x.IntValue == y.IntValue)); 
    
  3. 이 개체의 유형에 대한 정의 IEqualityComparer를 구현

주의 모든 옵션에서 당신은 또한 Product 클래스를 비교 돌봐해야합니다 (같은 3 가지 옵션을 사용할 수 있습니다)

+0

감사합니다 제대로 작동합니다 –

+0

@eminach - 오신 것을 환영합니다 :) –

관련 문제