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

c# – 如何从Expression>谓词中获取属性,运算符和值?

发布时间:2020-12-15 08:33:14 所属栏目:百科 来源:网络整理
导读:有没有办法从Expression Func T,bool中提取属性,运算符和匹配值?给出以下示例: var customers = GetCustomers();var customerQuery = customers.Where(x= x.CustomerID == 1 x.CustomerName == "Bob"); // The query is for illustration only 我需要能够
有没有办法从Expression< Func< T>,bool>中提取属性,运算符和匹配值?给出以下示例:
var customers = GetCustomers();
var customerQuery = customers.Where(x=> x.CustomerID == 1 
    && x.CustomerName == "Bob"); // The query is for illustration only

我需要能够得到以下内容:

Property: CustomerID
Operator: Equals
Value:    1

Property: CustomerName
Operator: Equals
Value:    Bob

我已经编写了一些可以提取Expression的属性名称的东西,但我似乎无法找到值和运算符的位置,尽管它在Expression的DebugView属性中非常清晰可见.

解决方法

运算符将位于BinaryExpression的方法上,即Equals节点.您还应该查看表达式.NodeType,它显示了很多(它应该是Equal).

这些值通常位??于BinaryExpression的.Right中的ConstantExpression中,或者在捕获的变量的情况下:capture-context将是ConstantExpression,因此该值将是ConstantExpression上的MemberExpression(您需要调查该成员是否是FieldInfo与PropertyInfo,并通过.GetValue(…)获取该值.

(编辑:李大同)

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

    推荐文章
      热点阅读