djd*_*d87 6 c# linq reflection func expression-trees
有没有办法从一个Expression<Func<T>,bool>?拉出属性,运算符和匹配值?给出以下示例:
var customers = GetCustomers();
var customerQuery = customers.Where(x=> x.CustomerID == 1
&& x.CustomerName == "Bob"); // The query is for illustration only
Run Code Online (Sandbox Code Playgroud)
我需要能够得到以下内容:
Property: CustomerID
Operator: Equals
Value: 1
Property: CustomerName
Operator: Equals
Value: Bob
Run Code Online (Sandbox Code Playgroud)
我已经编写了一些可以提取Expression的属性名称的东西,但我似乎无法找到值和运算符的位置,尽管它在Expression的DebugView属性中非常清晰可见.
该运营商将在BinaryExpression的Method那是Equals节点.你还应该看一下表达式.NodeType,它揭示了很多(它应该是Equal).
该值通常将在一个ConstantExpression在.Right的那个BinaryExpression,或在捕获的变量的情况下:所述捕获上下文将是ConstantExpression,这样的值将是MemberExpression在一个ConstantExpression(你将需要调查构件是否为FieldInfoVS PropertyInfo,并通过.GetValue(...)该获取值).
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |