比较自定义对象c#

时间:2011-04-26 08:43:40

标签: c# list

我有以下情况:

我有一个可以循环任何次数的循环。在该循环中,我调用一个返回List<CustomClass>的方法。在运行循环之后,我需要能够比较每个列表中的所有List<CustomClass>项,并查看哪些项在所有项之间是通用的。他们。为了做到这一点,我试图将所有List<CustomClass>放入另一个列表中:List<List<CustomClass>然后我需要使用所有这些来查看所有这些列表中存在的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; { 。我将比较我的CustomClass的一个属性(字符串名称)

这是我到目前为止所拥有的

List<List<CustomClass>>

我希望这是有道理的。对此有任何帮助非常感谢。

由于

修改

例如在List<CustomClass>中,每个{{1}}包含一个名称设置为“Pete”的CustomClass,然后我想创建一个名称设置为“Pete”的CustomClass并将其添加到最终列表中。

1 个答案:

答案 0 :(得分:4)

  

查看所有这些之间的共同点

使用Intersect扩展名方法:

var common = list1.Intersect(list2);

请注意,为此,您应该:

  • Equals
  • 中覆盖GetHashCodeCustomClass
  • make CustomClass实施IEquatable<CustomClass>
  • Intersect提供实施IEqualityComparer<CustomClass>
  • 的自定义比较器