Bonjour!EF Distinct (IEqualityComparer) Erreur
Étant donné:
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();
}
}
Ceci compile, mais l'exécution je vais obtenir un Linq to Entity could not translate Comparer
-Exception.
Des suggestions?
Est-il possible de faire ce pas dans le .NET couche? D'une certaine manière, dites à l'appel EF de le faire en SQL? –
Voir mon édition - utiliser le groupage et vous obtiendrez le comportement désiré. Ce serait bien d'avoir "DistinctBy" dans le framework (et géré par EF etc) mais je pense que la version groupée fera ce que vous voulez. –
Merci! Cela me semble très plausible, car vous faites le groupe sur un IQueryable. Je vais essayer ça plus tard! PS: Oui, vous avez la Distinct-Condition correcte :) –