加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 07:56:07 所属栏目:百科 来源:网络整理
导读:我有扩展方法: public static IQueryableTResult WithFieldLikeTResult( this IQueryableTResult query,FuncTResult,string field,string value){ ExpressionFuncTResult,bool expr = trans = field(trans).Contains(value); return query.Where(expr);} 我
我有扩展方法:
public static IQueryable<TResult> WithFieldLike<TResult>(
   this IQueryable<TResult> query,Func<TResult,string> field,string value)
{
   Expression<Func<TResult,bool>> expr = 
       trans => field(trans).Contains(value);
   return query.Where(expr);
}

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

public static IQueryable<TResult> WithFieldLike<TResult>(
   this IQueryable<TResult> query,Expression<Func<TResult,string>> field,bool>> expr = ???
   return query.Where(expr);
}

这种方法的调用是:

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

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

解决方法

解构字段并创建一个新表达式,如下所示:
var expr = Expression.Lambda<Func<TResult,bool>> (
    Expression.Call (field.Body,typeof (string).GetMethod ("Contains"),Expression.Constant (value)),field.Parameters) ;

(根据Maxs在评论中的细化编辑)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读