Buongiorno!Errore EF Distinct (IEqualityComparer)
Dato:
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();
}
}
Questo compilerà, ma il tempo di esecuzione mi metterò un Linq to Entity could not translate Comparer
-Exception.
Qualche suggerimento?
c'è qualche possibilità di farlo, non in .NET-layer? In qualche modo dire alla chiamata EF di fare questo in SQL? –
Vedere la mia modifica: usa il raggruppamento e otterrai il comportamento desiderato. Sarebbe bello avere "DistinctBy" nel framework (e gestito da EF ecc.) Ma penso che la versione raggruppata farà quello che vuoi. –
Grazie! Questo mi sembra molto plausibile, dato che stai facendo il gruppo su un IQueryable. Ci proverò più tardi! PS .: Sì, la condizione Distinct è corretta :) –