重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍LINQ Expression tree是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
我们提供的服务有:网站制作、网站设计、微信公众号开发、网站优化、网站认证、古丈ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的古丈网站制作公司
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是什么”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!