自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 手工把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

原创 手工把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

原创 手工把LINQ转成表达式(四) select, group, where, orderby

select, group, where, orderby这4个语句比较简单,调用的扩展方法参数形式都近似,处理的方式都是先得到语句的表达式然后把上一个参数代入,调用相应的扩展方法,这里用一个统一的处理方法来进行处理: private Expression Ge

2011-08-22 10:38:05 1681

原创 手工把LINQ转成表达式(三) from

先来看这段查询 int[] array = { 1, 3, 3 }; IQueryable A = array.AsQueryable(); IQueryable B = array.AsQueryab

2011-08-18 16:25:47 795

原创 手工把LINQ转成表达式(二) 准备工作

先来看一句简单的LINQ语句:from item in Sourceselect item这里如果写成方法调用的话就是Source.Select(item => item)这意味着in后面的是作为方法调用的发起方(invoker) ,from是定义表达式参数,

2011-08-15 17:31:46 1053

原创 把匿名对象转换成成员名索引形式的动态对象

在用LINQ进行数据查询操作时,我们时不时的会碰到匿名对象,对匿名对象的操作有时候会很不方便比如var query = from row in table select new { Col1  = row.col1 };这时只在当前方法内用query的结果是没问题的,但如

2011-08-11 15:51:44 2648 1

原创 手工把LINQ转成表达式(一) 基础知识

LINQ其实并非是全新的概念,在编程语言中内嵌SQL或脚本进行强类型绑定查询很早就存在,LINQ之所以能让人觉得非常强大的地方在于它的设计框架可以让它不仅仅用在数据库查询方面,只要查询对象有IQueryableProvider你就可以通过LINQ去查找。比如假设有个googl

2011-08-09 14:46:54 1034

原创 集合的排列组合

在编程的时候有时会碰到需要得到一组集合的某种排列组合集,这里用穷举法来求解。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespac

2011-08-09 13:54:13 1098

原创 lambda表达式的解析(八) 泛型调用及typeof操作

这篇是这个系列的最后一篇了,对于BlockExpression不再深入展开了,只对之前的泛型调用支持及typeof操作补漏。这次是进一步完善了grammar,现在能正常解析泛型调用及typeof操作,这使得我们能对这2种表达式进行正确的转换了。大家可以从http://tinyne

2011-08-09 11:33:33 4114

原创 lambda表达式的解析(七) 对象的创建

C#里用来创建对象的方式有以下几种调用构造函数 new obj(...)初始化成员列表 new obj { f1 = xxx, f2 = xxx, ... }创建数组 new arraytype[] { e1, e2, e3, ...}如果是匿名对象话,创建方式只

2011-08-04 16:47:06 6205

原创 lambda表达式的解析(六) 成员访问表达式

成员访问的解析稍微有点复杂,从字符串角度看,访问一个实例的成员有三种形式:访问成员字段或属性 instance.field instance.property访问索引器 instance[]访问方法 instance.method(...)在解析的时候就按这三种形

2011-08-03 17:24:35 6527

原创 lambda表达式的解析(五) Lambda表达式与闭包类型

在讲述如何解析转换成员访问表达式之前,先来讲一些预备知识。一个标准的lambda表达式应该是 ( 参数列表 ) => 表达式或表达式块 其中参数列表和方法的参数列表类似,不过lambda表达式更灵活,允许用的时候不用显示声明参数的类型甚至在一个参数的时候括号也可以不用

2011-08-02 14:51:17 2637

原创 lambda表达式的解析(四) 运算符表达式

一元、二元、三元操作符的转换大多都非常有规律,先看这个一元树:主要就是一个操作符跟一个表达式,转换起来很简单: private Expression ProcessUnaryExpression(ParseTreeNode expNode)

2011-08-01 15:02:54 3138

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除