我有扩展方法:
public static IQueryableWithFieldLike ( this IQueryable query, Func field, string value) { Expression > expr = trans => field(trans).Contains(value); return query.Where(expr); }
我需要更改参数字段来键入:Expression>.会是这样的.
public static IQueryableWithFieldLike ( this IQueryable query, Expression > field, string value) { Expression > expr = ??? return query.Where(expr); }
这种方法的调用是:
var query7 = query.WithFieldLike(trans => trans.DeviceModelNumber, "ber_3");
在这种情况下我应该如何构建"expr"?请帮忙.
解构field
并创建一个新的表达式,如下所示:
var expr = Expression.Lambda> ( Expression.Call (field.Body, typeof (string).GetMethod ("Contains"), Expression.Constant (value)), field.Parameters) ;
(按照Maxs在评论中的细化编辑)