linqWhere句で使用する式を生成する関数があります。
public static Expression<Func<T,bool>> GetWhereCondition<T>() where T : IActive
{
return x => x.Active;
}
(IActiveはプロパティ'Active'のみを定義することに注意してください)
他にも関連する機能があり、ビジネスルールなどを制御するために必要な条件をジェネリッククラスに注入できるという考えです。
問題は、これを実行すると、返される式に(デバッガーから見た)lamdaが含まれていることです。
x => Convert(x).Active
もちろん、これはlinqによって拒否されます。「LINQto Entitiesは、エンティティデータモデルのプリミティブ型のキャストのみをサポートします。」
だから私の質問は...
この動作を防ぐにはどうすればよいですか。変換の必要はなく、明らかにそれは望ましくありません。これを防ぐことさえ可能ですか?