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

前端之家收集整理的这篇文章主要介绍了c# – 如何从Expression>谓词中获取属性,运算符和值?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法从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(…)获取该值.

猜你在找的C#相关文章