请教 C# 如何获 lambda 达表达式的参数名和参数值值

vaivxuanzi 2015-05-05 04:47:05
有这么一个方法


public T GetEntity(Expression<Func<T, bool>> where)
{
//在方法里,是否可以从 where 中 获取 “UserOpenId ” 和它对应的值 “111”
}


假如这么调用


var entity = GetEntity(m => m.UserOpenId =="111"||m.LoginName=="112"||m.Password=="222");
...全文
706 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2015-05-06
  • 打赏
  • 举报
回复
用反射 反射出T类型的Fileld Value
tcmakebest 2015-05-06
  • 打赏
  • 举报
回复
where 只是一个检验方法, 具体检验的对象在哪儿它都不知道啊
Yun__ 2015-05-06
  • 打赏
  • 举报
回复
这个最好自己去看看官方文档

            //获得=>左边name
            ParameterExpression param = (ParameterExpression)exprTree.Parameters[0];
            //二元方程的主体
            UnaryExpression body = (UnaryExpression)exprTree.Body;
            //获得二元方程
            BinaryExpression operation = body.Operand as BinaryExpression;
            //获得左边属性或字段
            MemberExpression left = (MemberExpression)operation.Left;
            //获得右边属性或字段
            MemberExpression right = (MemberExpression)operation.Right;
            //获得右边属性或字段的值
            var value=Expression.Lambda(right).Compile().DynamicInvoke();
这个没做判断 实际需要有很多判断的 http://www.cnblogs.com/irenebbkiss/p/4157364.html 你可以看看这篇文章
  • 打赏
  • 举报
回复
这个可能可以,但我不知道…… 万能的复杂的lamb树

8,497

社区成员

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

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