ラムダに基づいて以前に C# 式を使用したことがありますが、手動で作成した経験はありません。が与えられたExpression<Func<SomeType, bool>> originalPredicate
ので、 を作成したいと思いますExpression<Func<OtherType, bool>> translatedPredicate
。
この場合、 SomeType と OtherType には同じフィールドがありますが、関連していません (継承がなく、共通のインターフェイスに基づいていません)。
背景: LINQ to SQL に基づくリポジトリ実装があります。モデルを POCO に保持するために、LINQ to SQL エンティティを Model エンティティに射影します。式を (仕様の形式として) リポジトリに渡したいのですが、式はモデル エンティティに基づいている必要があります。しかし、これらの式をデータ コンテキストに渡すことはできません。これは、LINQ to SQL エンティティに基づく式が想定されているためです。