私はIDとObjectKey、または同じオブジェクトであってもよいランダム値とオブジェクトを比較しようとしています。要するに、オブジェクトを、同じ型だけでなく、何かと比較したいのです。'obj == value'を 'obj.Equals(value)'に変更するためにExpressionVisitorを使用してください
これを行うには、オブジェクトのEquals()とGetHashCode()をオーバーライドし、期待どおりに動作しています。しかし、私はLinqが 'obj == value'で検索するときにこれらのメソッドを呼び出さないことに気付きました。
クエリを 'obj.Equals(value)'に変更すると、Equals()メソッドが必要に応じて呼び出されます。しかし、それは私が必要なものではありません。
また、 '=='と '!='演算子をオーバーロードしようとしましたが、インタフェース経由で検索しているので、これらのオーバーロードは呼び出されていません。
最後に、誰かが将来どこでも '=='を使用する可能性があるため、すべてのクエリを手動で変更することはできません。
私はExpressionVisitorに来ました。私は私のLinqクエリの式を書き換えることができることに気づいたが、私はまあまあだ。私は見つけたいくつかの例を試しましたが、何らかのエラーがあります。
最後に、これは私がExpressionVisitor経由で必要なものです:
がこれを置き換える: するvarオブジェクト= ctx.Where(OBJ => OBJ ==値)。
to this: var objects = ctx.Where(obj => obj.Equals(value));
可能ですか?