¡Buenos días!EF Distinct (IEqualityComparer) Error
dado:
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();
}
}
Esto compilará, pero en tiempo de ejecución que recibirá Linq to Entity could not translate Comparer
-Exception.
¿Alguna sugerencia?
¿Hay alguna posibilidad de hacerlo no en el .NET-Capa? ¿De alguna manera le dicen a EF-call que haga esto en SQL? –
Ver mi edición - use la agrupación y obtendrá el comportamiento deseado. Sería bueno tener "DistinctBy" en el marco (y manejado por EF, etc.) pero creo que la versión agrupada hará lo que usted desee. –
¡Gracias! Esto parece muy plausible para mí, ya que está haciendo el grupo en un IQueryable. ¡Intentaré esto más adelante! PD: Sí, tiene la Distinct-Condition correcta :) –