相关疑难解决方法(0)

为string.Contains构建表达式树

我正在努力构建表达式树,以便我可以动态地对某些数据进行过滤.

我想出了这一点,但在失败var lambda =

foreach (var rule in request.Where.Rules)
{
    var parameterExpression = Expression.Parameter(typeof(string), rule.Field);
    var left = Expression.Call(parameterExpression, typeof(string).GetMethod("ToLower", Type.EmptyTypes));
    var right = Expression.Constant(rule.Data.ToLower());
    var method = typeof(string).GetMethod("Contains", new [] { typeof(string) });
    var call = Expression.Call(left, method, right);
    var lambda = Expression.Lambda<Func<T, bool>>(call, parameterExpression);
    query = query.Where(lambda);
}
Run Code Online (Sandbox Code Playgroud)

var rule有一个Field(ex"Name"),我想与rule.Data(ex'tom')中的文本进行比较.因此,如果T.Name.Contains("tom");我希望查询包含记录,否则,不是.

var query是类型的IQueryable<T>

编辑:最后得到它使用此代码:

foreach (var rule in request.Where.Rules)
{
    var parameter = Expression.Parameter(typeof(T), "x");
    var property = Expression.Property(parameter, …
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0 expression-trees

5
推荐指数
1
解决办法
6840
查看次数

标签 统计

.net-4.0 ×1

c# ×1

expression-trees ×1