我有两个集合ProdList<Product, int>
和RuleList<Product, int>
包含产品和计数列表。
如果RuleList所有项目都参与ProdList集合,我该怎么办? 我试过了
bool a= ProdList.All(x => RuleList.Contains(x));
但它不起作用。
答案 0 :(得分:1)
它不起作用的原因是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个选项)