C#从List< List< int>>中删除重复项 [英] C# remove duplicates from List<List<int>>
本文介绍了C#从List< List< int>>中删除重复项的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法想出最有效的算法,以从 List< List< int>>
中删除重复项(例如(我知道这看起来像列表 int []
,但只是为了视觉目的而这样做:
I'm having trouble coming up with the most efficient algorithm to remove duplicates from List<List<int>>
, for example (I know this looks like a list of int[]
, but just doing it that way for visual purposes:
my_list[0]= {1, 2, 3};
my_list[1]= {1, 2, 3};
my_list[2]= {9, 10, 11};
my_list[3]= {1, 2, 3};
所以输出只是
new_list[0]= {1, 2, 3};
new_list[1]= {9, 10, 11};
让我知道,如果你有任何想法,我真的很感激。
Let me know if you have any ideas. I would really appreciate it.
推荐答案
构建自定义 EqualityComparer< List< int>>
public class CusComparer : IEqualityComparer<List<int>>
{
public bool Equals(List<int> x, List<int> y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(List<int> obj)
{
int hashCode = 0;
for (var index = 0; index < obj.Count; index++)
{
hashCode ^= new {Index = index, Item = obj[index]}.GetHashCode();
}
return hashCode;
}
}
然后,您可以使用独特的与自定义比较方法:
Then you can get the result by using Distinct with custom comparer method:
var result = my_list.Distinct(new CusComparer());
编辑:
将索引包含到方法 GetHashCode
中,以确保不同的订单不相等
Include the index into method GetHashCode
to make sure different orders will not be equal
这篇关于C#从List< List< int>>中删除重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文