Welcome

首页 / 软件开发 / LINQ / LINQ那些事儿(4)- Query Expression和Query Operator

LINQ那些事儿(4)- Query Expression和Query Operator2012-02-18 博客园 海南K.K我学习LINQ的时候是直接看MSDN和LINQ team的blog,经常会被里面的一些名词弄混,下面这些名词你都弄懂了吗?

Expression Tree

Expression

Lambda Expression

Query Expression

Query Operator

Expression Tree

和 Expression的区别类似XmlNode和XmlElement的区别。Expression Tree用于表达对IQueryable<T>类型数据源的查询树,是Select/Where/From等多个Query method嵌套,在运行时LINQ2SQL会根据Expression Tree来生成SQL语句。

Expression

确切的说是Expression类,为Expression Tree的每一个节点的基类,并提供了构造不同类型Expression的factory method。在System.Linq.Expression命名空间中提供了多种类型的Expression,经常用到的包括:

ClassDescription
BinaryExpression用来表达所有的二元运算,形式为(left) op (right)。如a+b, c && d等。
UnaryExpression用来表达所有的一元运算,形式为op(operand)。如!a,b++等。
ConstantExpression用来表达常量或外部变量(不在Expression Tree的控制结构内定义的变量)的定义。
ParameterExpression用来表达Expression Tree控制结构内的局部变量的定义
MethodCallExpression用来表达函数的调用
MemberExpression用来表达属性的访问