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

前端之家收集整理的这篇文章主要介绍了c# – 将参数从lambda函数更改为lambda表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有扩展方法
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在评论中的细化编辑)

猜你在找的C#相关文章