重複するオブジェクトを含むデータを返すL2Eクエリがあります。それらの重複したオブジェクトを削除する必要があります。基本的には、IDが同じならオブジェクトが重複していると仮定します。私はq.Distinct()
を試しましたが、それでも重複したオブジェクトが返されました。それから私は自分のIEqualityComparerを実装し、それをDistinct()
メソッドに渡そうとしました。エンティティへ異なる値を返すためにIEqualityComparerを実装するにはどうすればよいですか?
LINQは方法 「System.Linq.IQueryable
1[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
を書くのですか?
+1ずに個別に使用します。 First()ではなく、.FirstOrDefault()を使用する必要があります –
私はあなたに教育を借りています!それらの答えの1つは、私がアップアップ投票をすることができればと思います! – seebiscuit
@yoelhalbはGroupByの保証をしていません返されたグループは空ではありませんか?グループ化は要素を切り離すことによって形成されるので、返されたグループの1つが空になる方法はありません – vijrox