如何检查集合是否包含集合
本文关键字:集合 是否 包含 检查 何检查 | 更新日期: 2023-09-27 18:05:07
我有两个集合ProdList<Product, int>
和RuleList<Product, int>
包含产品和计数的列表。
如果RuleList所有项目都参与到ProdList集合中,我该如何获取我试过
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个选项可用(