Distinct List<List<int>>?
本文关键字:gt lt List int Distinct | 更新日期: 2023-09-27 18:33:10
我只获取不同的列表有问题。
所以我有:
List<List<int>> combinations = new List<List<int>>();
combinations.Add(new List<int> {1,1});
combinations.Add(new List<int> {1,2});
combinations.Add(new List<int> {1,1}); // Same
combinations.Add(new List<int> {1,3});
我需要做的是只得到:
{1,1}
{1,2}
{1,3}
我试过这个:combinations = combinations.Distinct().ToList();
但它不起作用。
任何想法。提前谢谢你。
您可以使用自己的比较器:
var distincts =
combinations
.Distinct(new ListOfIntComparer());
class ListOfIntComparer : IEqualityComparer<List<int>>
{
public bool Equals(List<int> a, List<int> b)
{
return
a.SequenceEqual(b);
}
public int GetHashCode(List<int> l)
{
unchecked
{
int hash = 19;
foreach (var foo in l)
{
hash = hash * 31 + foo.GetHashCode();
}
return hash;
}
}
}
GetHasCode()
Jon Skeet在这里实现。
试图想出最短的一行。这就是我想出的。希望对您有所帮助。
var unique = combinations.GroupBy(x => string.Join(",", x), (g, items) => items.First());
尝试添加一个常规的 int 数组:
List<List<int>> lli = new List<List<int>>();
lli.Add((new int[] { 2, 4 }).ToList<int>());