当前位置:  开发笔记 > 编程语言 > 正文

将参数从lambda函数更改为lambda表达式

如何解决《将参数从lambda函数更改为lambda表达式》经验,为你挑选了1个好方法。

我有扩展方法:

public static IQueryable WithFieldLike(
   this IQueryable query,
   Func field,
   string value)
{
   Expression> expr = 
       trans => field(trans).Contains(value);
   return query.Where(expr);
}

我需要更改参数字段来键入:Expression>.会是这样的.

public static IQueryable WithFieldLike(
   this IQueryable query,
   Expression> field,
   string value)
{
   Expression> expr = ???
   return query.Where(expr);
}

这种方法的调用是:

var query7 = query.WithFieldLike(trans => trans.DeviceModelNumber, "ber_3");

在这种情况下我应该如何构建"expr"?请帮忙.



1> Anton Tykhyy..:

解构field并创建一个新的表达式,如下所示:

var expr = Expression.Lambda> (
    Expression.Call (field.Body, typeof (string).GetMethod ("Contains"),
        Expression.Constant (value)), field.Parameters) ;

(按照Maxs在评论中的细化编辑)

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有