我有一个List<Tuple<string,long,byte[]>>
和我通过字节数组的内容要组。
有没有一种简单的方法有做到这一点GroupBy
和拉姆达?
理想情况下,我想这样做而无需创建的中间数据结构(如一个字符串来保存阵列的元素)。
我有一个List<Tuple<string,long,byte[]>>
和我通过字节数组的内容要组。
有没有一种简单的方法有做到这一点GroupBy
和拉姆达?
理想情况下,我想这样做而无需创建的中间数据结构(如一个字符串来保存阵列的元素)。
你可以做到这一点使用自定义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>())