Вероятно, это будет чрезвычайно простой вопрос. Я просто пытаюсь удалить дубликаты байтов [] из коллекции.
Поскольку поведение по умолчанию заключается в сравнении ссылок, я подумал, что создание IEqualityComparer будет работать, но это не так.
Я пытался использовать HashSet и LINQ Distinct ().
Пример кода:
using System;
using System.Collections.Generic;
using System.Linq;
namespace cstest
{
class Program
{
static void Main(string[] args)
{
var l = new List<byte[]>();
l.Add(new byte[] { 5, 6, 7 });
l.Add(new byte[] { 5, 6, 7 });
Console.WriteLine(l.Distinct(new ByteArrayEqualityComparer()).Count());
Console.ReadKey();
}
}
class ByteArrayEqualityComparer : IEqualityComparer<byte[]>
{
public bool Equals(byte[] x, byte[] y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(byte[] obj)
{
return obj.GetHashCode();
}
}
}
Выход:
2