Как реализовать IEqualityComparer для возврата различных значений?
У меня есть запрос L2E, который возвращает некоторые данные, которые содержат дубликаты объектов. Мне нужно удалить эти дубликаты объектов. По сути, я должен предположить, что если их идентификаторы совпадают, то объекты дублируются. я пробовалq.Distinct()
, но это все еще возвращало дубликаты объектов. Затем я попытался реализовать свой собственный IEqualityComparer и передать егоDistinct()
метод. Сбой метода со следующим текстом:
LINQ to Entities не распознает метод 'System.Linq.IQueryable1[DAL.MyDOClass] Distinct[MyDOClass](System.Linq.IQueryable
1 [DAL.MyDOClass], System.Collections.Generic.IEqualityComparer`1 [DAL.MyDOClass]) ', и этот метод нельзя преобразовать в выражение хранилища.
А вот и реализация EqualityComparer:
internal class MyDOClassComparer: EqualityComparer<MyDOClass>
{
public override bool Equals(MyDOClass x, MyDOClass y)
{
return x.Id == y.Id;
}
public override int GetHashCode(MyDOClass obj)
{
return obj == null ? 0 : obj.Id;
}
}
Так как мне написать свойIEqualityComparer
должным образом?