두 개의 컬렉션 ProdList<Product, int>
및 RuleList<Product, int>
에 제품 및 카운트 목록이 포함되어 있습니다.컬렉션에 컬렉션이 포함되어 있는지 확인하는 방법
ProdList 수집 에서 partici RuleList 모든 항목은 내가
bool a= ProdList.All(x => RuleList.Contains(x));
으로 해봤지만 작동하지 않을 경우 내가 얻는 방법에 대해 설명합니다.
두 개의 컬렉션 ProdList<Product, int>
및 RuleList<Product, int>
에 제품 및 카운트 목록이 포함되어 있습니다.컬렉션에 컬렉션이 포함되어 있는지 확인하는 방법
ProdList 수집 에서 partici RuleList 모든 항목은 내가
bool a= ProdList.All(x => RuleList.Contains(x));
으로 해봤지만 작동하지 않을 경우 내가 얻는 방법에 대해 설명합니다.
작동하지 않는 이유 Contains
방법은 Equals
재정의하고 그렇지 않은 경우 항목의 GetHashCode
을 사용하기 때문이다 object
의 것들이다.
솔루션 :
Equals
및 GetHashCode
사용 Any
대신 Contains
:
var result = ProdList.All(x => RuleList.Any(y => x.Product.Equals(y.Product) &&
x.IntValue == y.IntValue));
이 개체의 유형에 대한 정의 IEqualityComparer
를 구현
주의 모든 옵션에서 당신은 또한 Product
클래스를 비교 돌봐해야합니다 (같은 3 가지 옵션을 사용할 수 있습니다)
감사합니다 제대로 작동합니다 –
@eminach - 오신 것을 환영합니다 :) –
당신은'Equals'의 메소드를 오버라이드 (override) 다음 코드는 ProdList하고 무엇 – RafaelC
작동합니다 규칙 목록? Dictonaries 내가 가정? 제품 또는 int와 일치 시키려고합니까? 아니면 둘다? – SledgeHammer
@SledgeHammer 모두 –