不同列表<list <int>&gt;?

时间:2016-02-03 20:11:18

标签: c# list distinct


我只有获得不同的列表有问题。
所以我有:

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(); 但它不起作用。
有任何想法吗。提前谢谢。

3 个答案:

答案 0 :(得分:13)

您可以使用自己的比较器:

str
来自Jon Skeet here

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; } } } 实施。

答案 1 :(得分:1)

试图想出最短的oneliner。这就是我想出的。 希望它可以帮到你。

var unique = combinations.GroupBy(x => string.Join(",", x), (g, items) => items.First());

答案 2 :(得分:-6)

尝试添加常规int数组:

List<List<int>> lli = new List<List<int>>();

lli.Add((new int[] { 2, 4 }).ToList<int>());