摘要: 我们有一个图书类Book,先已经有一个填充有数据的Book集合,我们需要从这个集合里查找出单价小于50的书籍:usingSystem;/**////<summary>///图书类///</summary>publicclassBook{/**////<summary>///图书名称///</summary>publicstringTitle{get;... 阅读全文
posted @ 2010-05-14 23:04 周宏伟 阅读(225) 评论(0) 推荐(0)
摘要: 走进Linq-Linq to SQL How do I(1)走进Linq-Linq to SQL How do I(2)很好的文章! 阅读全文
posted @ 2010-05-14 22:46 周宏伟 阅读(125) 评论(0) 推荐(0)
摘要: 表达式树概念Linq的承诺貌似Java那个梦想一样:Write Once,Run Anywhere。Java是怎么做到的?Sun等公司为我们在各种平台架构上实现了各自的虚拟机,Java的编译分为两个阶段,第一阶段将Java代码编译为字节码,在这个阶段不管在什么平台上,只要Java源代码一样生成的字节码是一致的,第二个阶段,也就是运行阶段,虚拟机会根据平台的不同生成不同的代码。就是通过将编译器分为前... 阅读全文
posted @ 2010-05-14 21:30 周宏伟 阅读(408) 评论(0) 推荐(0)
摘要: 在C#3.0中,一个对象创建表达式可以包含一个对象或集合初始化器,用于初始化新创建的对象的成员或新创建的集合的元素。对象创建表达式:newtype(argument-list(可选))对象或集合初试化器(可选)newtype对象或集合初试化器一个对象创建表达式可以省略构造器参数列表,并将其连同圆括号一起替换为一个对象或集合初始化器。省略构造器参数列表并将其连同圆括号一起替换为一个对象或集合初始化器... 阅读全文
posted @ 2010-05-14 14:48 周宏伟 阅读(315) 评论(0) 推荐(0)
摘要: 当我们需要对已有类的功能进行扩展时,我们通常会想到继承,继承已有类,然后为其加入新的行为。而C# 3.0中加入的扩展方法(Extension Methods)特性,则提供了另一种实现功能扩展的方式。扩展方法是一种特殊的静态方法,它定义在一个静态类中,但可以在其他类的对象上像调用实例方法那样进行调用。因此,通过扩展方法,我们就可以在不修改一个类型的前提下对一个类型进行功能上的扩充,这种方法并不会产生... 阅读全文
posted @ 2010-05-14 14:46 周宏伟 阅读(223) 评论(0) 推荐(0)
摘要: 20.2.1引入匿名类型在很多情况下,我们需要一种能够临时将一批具有一定关联的数据存放起来的对象;或者在某些情况下,我们对仅一个对象的“形状”(如属性的名字和类型等)比较感兴趣。例如Book类,当它和其他商品放在一起进行查询时,我们可能仅对其名称和价格感兴趣,并且希望将这两种属性放在另外一个单独的临时对象中以备今后使用。这时,我们关注的仅仅是这个临时对象具有Name和Pri... 阅读全文
posted @ 2010-05-14 14:39 周宏伟 阅读(887) 评论(0) 推荐(1)
摘要: 20.1隐式类型在C#3.0中增加了一个变量声明var,这个声明和JavaScript 的var类似,但也有不同。相同之处是它可以用var来声明任何类型的局部变量;而不同之处在于它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。20.1.1隐式类型局部变量的声明与使用在C# 3.0中,引进了一个新的关键字叫做var。var允许你声明一个新变量,它的类型是从用来初... 阅读全文
posted @ 2010-05-14 14:26 周宏伟 阅读(1329) 评论(0) 推荐(0)
摘要: 在C#2.0中引入了匿名方法,允许在期望出现委托的时候以“内联”的代码替代之。尽管匿名方法提供了函数式编程语言中的很多表达能力,但匿名方法的语法实在是太罗嗦了,并且很不自然。Lambda表达式为书写匿名方法提供了一种更加简单、更加函数化的语法。实际上Lambda表达式的本质是匿名方法,也即是当编译我们的程序代码时,编译器会自动帮我们将Lambda表达式转换为匿名方法。20.... 阅读全文
posted @ 2010-05-14 14:18 周宏伟 阅读(247) 评论(0) 推荐(0)