Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何为多级引用属性(链接属性)构建表达式树?_.net_Entity Framework_Expression Trees - Fatal编程技术网

.net 如何为多级引用属性(链接属性)构建表达式树?

.net 如何为多级引用属性(链接属性)构建表达式树?,.net,entity-framework,expression-trees,.net,Entity Framework,Expression Trees,例如,假设我有一个字符串属性“Document.DocumentType.DocumentCode”,其中DocumentCode是可为空的十进制类型 如何为此构建表达式树:x.Document.DocumentType.DocumentCode.GetValueOrDefault()==4 就我的实际情况而言,我不知道链接字符串属性的确切外观或属性的级别。那么,该树是: 相等匹配,其中左侧复杂,右侧为常量表达式4 LHS是(表达式)上的方法调用 上一步中的表达式是(表达式)上的属性访问表达式

例如,假设我有一个字符串属性“Document.DocumentType.DocumentCode”,其中DocumentCode是可为空的十进制类型

如何为此构建表达式树:
x.Document.DocumentType.DocumentCode.GetValueOrDefault()==4

就我的实际情况而言,我不知道链接字符串属性的确切外观或属性的级别。

那么,该树是:

  • 相等匹配,其中左侧复杂,右侧为常量表达式4
  • LHS是(表达式)上的方法调用
  • 上一步中的表达式是(表达式)上的属性访问表达式
  • 上一步中的表达式是(表达式)上的属性访问表达式
    DocumentType
  • 上一步中的表达式是
    参数表达式
从底部开始,然后从那里开始建造。换句话说,如果你知道你只会拥有房产,你会想:

  • 将字符串拆分为“”
  • 创建一个
    参数表达式
  • 循环访问属性集,每次添加另一层或属性访问,例如

    currentExpression = Expression.Property(currentExpression, propertyName);
    
  • 在处向表达式添加方法调用

  • 使用它和给定的任何常量值构建一个相等比较
    • 嗯,那棵树是:

      • 相等匹配,其中左侧复杂,右侧为常量表达式4
      • LHS是(表达式)上的方法调用
      • 上一步中的表达式是(表达式)上的属性访问表达式
      • 上一步中的表达式是(表达式)上的属性访问表达式
        DocumentType
      • 上一步中的表达式是
        参数表达式
      从底部开始,然后从那里开始建造。换句话说,如果你知道你只会拥有房产,你会想:

      • 将字符串拆分为“”
      • 创建一个
        参数表达式
      • 循环访问属性集,每次添加另一层或属性访问,例如

        currentExpression = Expression.Property(currentExpression, propertyName);
        
      • 在处向表达式添加方法调用

      • 使用它和给定的任何常量值构建一个相等比较

      我建议重写这个,不太容易理解实际问题是什么。我建议重写这个,不太容易理解实际问题是什么。