如何检查集合是否包含集合

本文关键字:集合 是否 包含 检查 何检查 | 更新日期: 2023-09-27 18:05:07

我有两个集合ProdList<Product, int>RuleList<Product, int>包含产品和计数的列表。

如果RuleList所有项目都参与到ProdList集合中,我该如何获取我试过

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

但它不起作用。

如何检查集合是否包含集合

它不起作用的原因是Contains方法使用了项的EqualsGetHashCode,如果不重写,它们就是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个选项可用(