以下の式ビルダーは正常に動作します。subMember
文字列であれば問題ありません。
subMember
名前付きのを受け取ったと想像してください。Code
これCode
はInt32
です。これについては、を作成したいのですが、であるStartWith
ため解析できませんInt32
。文字列に変換する必要があると思います。どうすればそれを実装できますか?
例:100、102、105、200、300、301、3011..。
subMember = "10"の場合、結果は100,102,105になります。
subMember = "30"の場合、結果は300,301,3011になります。
subMember = "301"の場合、結果は301,3011になります
private static Expression<Func<T, bool>> BuildPredicate<T>(string member, object value)
{
var p = Expression.Parameter(typeof(T));
Expression body = p;
foreach (var subMember in member.Split('.'))
{
body = Expression.PropertyOrField(body, subMember);
}
return Expression.Lambda<Func<T, bool>>(
Expression.Equal(body, Expression.Constant(value, body.Type)), p);
}