2
contains演算子を使用してlinq式を動的に作成しようとしています。linq式の作成(containsを使用)の問題点
このトピックに関連するいくつかの記事を読んだ後、私は私が行うことを可能にする次のコードが出ている評価のように「が含まれる」:
internal static Expression<Func<TEntity, bool>> StringContains<TEntity>(string propertyName, string subString)
{
MethodInfo contains = typeof(JsonLinqParser_Paser).GetMethod("Like");
var param = Expression.Parameter(typeof(TEntity));
var body = Expression.Call(contains, Expression.Property(param, propertyName), Expression.Constant(subString, typeof(string)));
var lambda = Expression.Lambda<Func<TEntity, bool>>(body, param);
return lambda;
}
public static bool Like(string a, string b)
{
return a.Contains(b);
}
をそして、これはそうのように呼ばれている:
次のようにvar expression = Expression.Lambda<Func<TEntity, bool>>(StringContains<TEntity>("FIPSCO_STR", _myStringValue), param);
ただし、実行時に、私はエラーを取得する:タイプの
式 'System.Func`2 [DAL.BestAvailableFIP、可能System.Boolean]' 戻り型ため を使用することができない "DAL.BestAvailableFIP" が "TEntity" タイプである '可能System.Boolean'
。
これはラムダ式に関する私の知識の欠如に関連していると確信しています。誰かが私が間違っていることを教えてもらえますか?