如何动态生成ToUpper()表达式

yxx7348 2018-11-12 08:57:17
新手请教:
如何动态生成以下表达式:u => u.公司.ToUpper().Contains("四川")
现在不会的是ToUpper()部分, 除此之外用以下代码已实现:

ParameterExpression parameter = Expression.Parameter(typeof(业务记录), "t");
MemberExpression member = Expression.PropertyOrField(parameter, field);
ConstantExpression constant = Expression.Constant(keyword);
System.Reflection.MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });
var containsMethodExp = Expression.Call(ToUpperMethodExp, method, constant);
var lambda = Expression.Lambda<Func<业务记录, Boolean>>(containsMethodExp, parameter);
...全文
22 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxx7348 2018-11-14
  • 打赏
  • 举报
回复
感谢stherix的热心解答,非常感谢!!!
stherix 2018-11-13
  • 打赏
  • 举报
回复
            ParameterExpression parameter = Expression.Parameter(typeof(业务记录), "t");
            MemberExpression member = Expression.PropertyOrField(parameter, field);
            ConstantExpression constant = Expression.Constant(keyword);
            System.Reflection.MethodInfo methodToUpper = typeof(string).GetMethod("ToUpper", new Type[] { });
            var ToUpperMethodExp = Expression.Call(member, methodToUpper);
            System.Reflection.MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });            
            var containsMethodExp = Expression.Call(ToUpperMethodExp, method, constant);
            var lambda = Expression.Lambda<Func<业务记录, Boolean>>(containsMethodExp, parameter);

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧