LINQ Expression tree是什么

发布时间:2021-12-02 09:25:29 作者:小新
来源:亿速云 阅读:144

这篇文章主要介绍LINQ Expression tree是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

LINQ Expression tree

一棵LINQ Expession tree在创建后就不可再改变。假如某个程序接收一棵Expression tree为参数,然后仅仅是用于生成别的形式的代码(例如SQL语句),那么这个不可改变性不会有什么影响。但如果一个程序想对一棵Expression tree进行修改该怎么办呢?解决方法是从来源的Expression tree复制出一棵新的树,在复制过程中根据自己的需要选择是直接复制原有节点还是创建修改了的节点。MSDN上有一个例子解释了如何实现这种需求,如何:修改表达式目录树。

更详细的LINQ Expression tree的讨论留待以后再说。先看代码:

digraph ExpressionTree {   node [fontsize=12, fontcolor=blue, font=Courier, shape=box]   // node declarations  lambda [label="Lambda Expression"]   anoFuncSig [label="Anonymous Function\nSignature"]  arrow [label="=>"]  anoFuncBody [label="Anonymous Function\nBody"]   impFuncSig [label="Implicit Anonymous\nFunction Signature"]  expr [label="Expression"]   impParam [label="Implicit Anonymous\nFunction Parameter"]  uexpr1 [label="Unary Expression"]   neg [label="-"]  uexpr2 [label="Unary Expression"]   id [label="Identifier:\nx"]   simpName [label="Simple Name:\nx"]   // relations   lambda -> anoFuncSig  lambda -> arrow  lambda -> anoFuncBody   {rank=same; anoFuncSig arrow anoFuncBody }   anoFuncSig -> impFuncSig  anoFuncBody -> expr   {rank=same; impFuncSig expr }   impFuncSig -> impParam  expr -> uexpr1 [style=dashed]   {rank=same; impParam uexpr1 }   impParam -> id  uexpr1 -> neg  uexpr1 -> uexpr2   {rank=same; id neg uexpr2 }   uexpr2 -> simpName  }

ast.dot: 

digraph ExpressionTree {   node [fontsize=12, fontcolor=blue, font=Courier, shape=box]  edge [fontsize=10, fontcolor=purple]  // node declarations  lambda [label="Lambda Expression"]   param [label="Parameter:\nx"]  body [label="Unary Expression\n(Negation)"]   param2 [label="Simple Name:\nx"]   // relations   lambda -> param [label="Signature"]  lambda -> body [label="Body"]   {rank=same; param body }   body -> param2  param -> param2 [label="(same node)", fontsize=8, style=dashed, dir=both]  }

以上是“LINQ Expression tree是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. LINQ动态查询怎么理解
  2. Linq to sql动态查询的方法有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linq

上一篇:FMDB使用的数据库的三种形式分别是什么

下一篇:SpringBoot2.0整合tk.mybatis异常怎么解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》