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(…)获取该值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |