比较自定义对象
本文关键字:对象 自定义 比较 | 更新日期: 2023-09-27 17:52:52
我有以下情况:
我有一个循环,它可以循环任意次数。在这个循环中,我调用了一个返回List<CustomClass>
的方法,在我运行了这个循环之后,我需要能够比较每个列表中的所有List<CustomClass>
项,看看它们之间哪些是共同的。为了做到这一点,我试着把所有的List<CustomClass>
放到另一个列表中:List<List<CustomClass>
,然后我需要使用所有这些来查看哪些存在于所有列表中。我将比较我的CustomClass (string Name)的一个属性
这是我到目前为止写的
public class CustomClass
{
public string name;
}
public List<CustomClass> SomeMethod()
{
List<List<CustomClass>> bigList = new List<List<CustomClass>>();
List<CustomClass> finalList = new List<CustomClass>();
for (int i=0;i<=5;i++)
{
List<List<CustomClass>> newList = GetNewList();
bigList.Add(newList);
}
//I now need to compare everything in bigList and create a new list with all common
//items in the list of bigList.
return finalList ;
}
public List<CustomClass> GetNewList()
{
List<CustomClass> newList = new List<CustomClass>();
for (int i=0;i<=5;i++)
{
CustomClass newClass = new CustomClass();
newClass.name = "some name";
newList.Add(newClass);
}
return newList;
{
我希望这有意义。如有任何帮助,我将不胜感激。
感谢编辑
例如,在List<List<CustomClass>>
中,每个List<CustomClass>
包含一个名称设置为"Pete"的CustomClass,然后我想创建一个名称设置为"Pete"的CustomClass,并将其添加到最终列表
看看它们之间哪些是共同的
使用Intersect
扩展方法:
var common = list1.Intersect(list2);
请注意,要使其工作,您应该:
- 覆盖
CustomClass
中的 - 使
CustomClass
实现IEquatable<CustomClass>
- 为
Intersect
提供实现IEqualityComparer<CustomClass>
的自定义比较器
Equals
和GetHashCode