0

我有一个List<Tuple<string,long,byte[]>>,我想按字节数组的内容进行分组。

GroupBy有没有一种简单的方法可以使用 lambda来做到这一点?

理想情况下,我想在不创建中间数据结构(如保存数组元素的字符串)的情况下做到这一点。

4

1 回答 1

3

您可以使用自定义IEqualityComparer<byte[]>(甚至更好,通用的:)实现来IEqualityComparer<T[]>实现:

class ArrayComparer<T> : IEqualityComparer<T[]>
{
    public bool Equals(T[] x, T[] y)
    {
        return x.SequenceEqual(y);
    }

    public int GetHashCode(T[] obj)
    {
        return obj.Aggregate(string.Empty, (s, i) => s + i.GetHashCode(), s => s.GetHashCode());
    }
}

我很确定GetHashCode可以更好地实施,但这只是一个例子!

用法:

var grouped = source.GroupBy(i => i.Item3, new ArrayComparer<byte>())
于 2013-04-05T18:47:13.807 回答