在List <t> </t>中查找重复项

时间:2014-08-06 07:31:05

标签: c# list

假设我的班级中有4个元素:A,B,C和D,我在循环中添加到列表中。我想在我的列表中找到这些元素,它们具有相同的A,B和B C值。现在我正在做这样的事情:

List<MyClass> ListMC = new List<MyClass>();

//do something
//read values from file and write them to a,b,c,d

if (ListMC.Any(k => k.A.Equals(a) && k.B.Equals(b) && k.C.Equals(c)))
{
    //write error to another list
    //it won't be add to ListMC
}

有没有更快的方法呢?因为当我向ListMC添加很多元素时,需要花费大量时间来检查它。

有什么想法吗? :)

==== 或者我可以添加每次列出这些元素(a,b,c,d),然后只删除这些重复项。但我仍然不知道快速做到这一点。

1 个答案:

答案 0 :(得分:0)

如果您不需要订单,请改用HashSet。它的速度要快得多。

所以改为使用:

HashSet<MyClass> ListMC = new HashSet<MyClass>();

//do something
//read values from file and write them to a,b,c,d

if (ListMC.Any(k => k.A.Equals(a) && k.B.Equals(b) && k.C.Equals(c)))
{
    //write error to another list
    //it won't be add to ListMC
}

如果您需要订购,可以使用ToList()进行转换。例如:

List<MyClass> ConvertedToList = ListMC.OrderByDescending(x => x.C).ToList();