LINQ
文章平均质量分 79
guoyichao
这个作者很懒,什么都没留下…
展开
-
lambda表达式的解析(四) 运算符表达式
一元、二元、三元操作符的转换大多都非常有规律,先看这个一元树: 主要就是一个操作符跟一个表达式,转换起来很简单: private Expression ProcessUnaryExpression(ParseTreeNode expNode)原创 2011-08-01 15:02:54 · 3138 阅读 · 0 评论 -
手工把LINQ转成表达式(五) let
let语句的处理比较特殊,先看一个简单例子: int[] array = { 1, 3, 3 }; IQueryable A = array.AsQueryable(); var q = from a in A let i = a + 1原创 2011-08-22 11:16:19 · 851 阅读 · 0 评论 -
手工把LINQ转成表达式(六) join
join操作处理稍微复杂点,linq: from a in A join b in B on a equals b select a 表达式: System.Int32[].Join(System.Int32[], a => a, b => b, (a, b原创 2011-08-22 11:17:31 · 1143 阅读 · 0 评论 -
手工把LINQ转成表达式(四) select, group, where, orderby
select, group, where, orderby这4个语句比较简单,调用的扩展方法参数形式都近似,处理的方式都是先得到语句的表达式然后把上一个参数代入,调用相应的扩展方法,这里用一个统一的处理方法来进行处理: private Expression Ge原创 2011-08-22 10:38:05 · 1681 阅读 · 0 评论 -
手工把LINQ转成表达式(三) from
先来看这段查询 int[] array = { 1, 3, 3 }; IQueryable A = array.AsQueryable(); IQueryable B = array.AsQueryab原创 2011-08-18 16:25:47 · 795 阅读 · 0 评论 -
手工把LINQ转成表达式(二) 准备工作
先来看一句简单的LINQ语句: from item in Source select item 这里如果写成方法调用的话就是 Source.Select(item => item) 这意味着in后面的是作为方法调用的发起方(invoker) ,from是定义表达式参数,原创 2011-08-15 17:31:46 · 1053 阅读 · 0 评论 -
手工把LINQ转成表达式(一) 基础知识
LINQ其实并非是全新的概念,在编程语言中内嵌SQL或脚本进行强类型绑定查询很早就存在,LINQ之所以能让人觉得非常强大的地方在于它的设计框架可以让它不仅仅用在数据库查询方面,只要查询对象有IQueryableProvider你就可以通过LINQ去查找。 比如假设有个googl原创 2011-08-09 14:46:54 · 1034 阅读 · 0 评论 -
lambda表达式的解析(六) 成员访问表达式
成员访问的解析稍微有点复杂,从字符串角度看,访问一个实例的成员有三种形式: 访问成员字段或属性 instance.field instance.property 访问索引器 instance[] 访问方法 instance.method(...) 在解析的时候就按这三种形原创 2011-08-03 17:24:35 · 6527 阅读 · 0 评论 -
lambda表达式的解析(三) 类型转换表达式
接 上篇的常量表达式的转换,接下来要讲的是怎么产生操作运算表达式。和C#通常意义上的3种操作符不同,我们的grammar把类型转换操作()从unary expression里拿出来独立成一个typecast_expression,也就是说要转换的操作符节点有4种。而且对于unar原创 2011-07-29 15:55:58 · 7788 阅读 · 0 评论 -
lambda表达式的解析(一) 序
当你要把一个表达式字符串转换成一个lambda expression,本篇也许能帮到你。 把一个字符串解析成lambda要做的工作其实就2个,第一步把字符串通过语法解析转换一颗语法树,第二步就是遍历这棵树把它转换成.lambda expression。做一个C#语法解析器是件麻烦事,好在有一些现成的解析器可以使用,这里选用Irony来完成这个工作。 Irony的包里含有一个Sample的C#原创 2011-07-27 14:51:17 · 6069 阅读 · 1 评论