我有一个List<Array>
,我正在使用LINQ查找重复项并进行计数,但这是行不通的。
看到您看到的图像,lstMyList [0]和lstMyList [11]在Int []中具有相同的值
这是lstMyList定义:
List<Array> lstMyList = new List<Array>();
我使用了代码,但是不起作用:
var group = lstMyList.GroupBy(t => t).ToArray();
要么
Dictionary<int[], int> count = lstMyList.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Count());
这是图像:http://imageshack.com/a/img69/2552/h114.png
也许有人可以给我提示我的问题。
最佳答案
首先创建比较器类:
sealed class ArrayEqualityComparer : IEqualityComparer<int[]>
{
public bool Equals(int[] x, int[] y)
{
if (x == null && y == null)
return true;
if (x != null && y != null)
return x.SequenceEqual(y);
return false;
}
public int GetHashCode(int[] obj)
{
return obj.Length;
}
}
然后,您可以在Group By子句中使用它。
List<int[]> lstMyList = new List<int[]> { new[] { 1, 2 }, new[] { 3, 4 }, new[] { 1, 2 } };
var groups = lstMyList.GroupBy(t => t, new ArrayEqualityComparer())
.Select(g => new { g.Key, Count = g.Count() })
.ToArray();
关于c# - 如何在LINQ中对列表数组进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22753976/