【发布时间】:2019-08-20 11:28:12
【问题描述】:
我想知道如何实现分组和消除重复数据,例如我有这个类:
public class MyObject
{
public string attrb1{ get; set; }
public string attrb2{ get; set; }
}
我想“调试”重复的对象,尝试以下方法,但它不起作用。
List<MyObject> ListObject = new List<MyObject>();
var obj1 = new MyObject{attrb1="attrb1", attrb2="attrb2"}
ListObject.Add(obj1);
var obj2 = new MyObject{attrb1="attrb1", attrb2="attrb2"}
ListObject.Add(obj2);
List<MyObject> GroupedList= new List<MyObject>();
foreach(var obj in ListObject)
{
if(!GroupedList.Contains(obj))
GroupedList.Add(obj);
}
【问题讨论】:
-
在这种情况下比较引用实例,您需要实现
IEquatable或您自己的相等比较器。 -
在您的代码中
GroupedList为空,因此ListaObjetos中的所有项目都添加到GroupedList -
obj1 和 obj2 是两个不同的实例,虽然它们的属性是相等的
-
考虑哈希集?