我有一个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/

10-11 19:19