比较自定义对象

本文关键字:对象 自定义 比较 | 更新日期: 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
  • 中的EqualsGetHashCode
  • 使CustomClass实现IEquatable<CustomClass>
  • Intersect提供实现IEqualityComparer<CustomClass>的自定义比较器