Dzień dobry!EF Distinct (IEqualityComparer) Błąd
Dane:
public class FooClass
{
public void FooMethod()
{
using (var myEntity = new MyEntity)
{
var result = myEntity.MyDomainEntity.Where(myDomainEntity => myDomainEntity.MySpecialID > default(int)).Distinct(new FooComparer);
}
}
}
public class FooComparer : IEqualityComparer<MyEntity.MyDomainEntity>
{
public bool Equals(MyEntity.MyDomainEntity x, MyEntity.MyDomainEntity y)
{
return x.MySpecialID == y.MySpecialID;
}
public int GetHashCode(MyEntity.MyDomainEntity obj)
{
return obj.MySpecialID.GetHashCode();
}
}
Będzie to skompilować, ale na starcie będę uzyskać Linq to Entity could not translate Comparer
-Exception.
Jakieś sugestie?
Czy jest jakaś szansa, aby to zrobić nie w NET-Layer? W jakiś sposób powiedzieć wezwanie EF, aby zrobić to w SQL? –
Zobacz moją edycję - użyj grupowania, a uzyskasz pożądane zachowanie. Byłoby miło mieć "DistinctBy" w strukturze (i obsługiwane przez EF itp.), Ale myślę, że zgrupowana wersja zrobi to, co chcesz. –
Dziękujemy! Wydaje mi się to bardzo prawdopodobne, ponieważ robisz grupę na IQueryable. Spróbuję tego później! PS: Tak, masz prawidłowy stan Distinct) –