LINQ 学习.docVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 LINQ TO SQL 基础 1. 什么是LINQ 在C#3.0中提出了诸如Lambda表达式、查询语法等一系列新的特性,这些新的特性帮助我们将查询数据理解为一个类编程的理念。我们称这个总的查询编程模型为“LINQ”--它指的是.NET 语言集合查询。LINQ 支持这样一个非常广泛的的扩展模型:该模型是针对不同的数据源而生成不同的高效的操作因子。.NET Framework 3.5版本内嵌了LINQ语言对对象,XML、实体、数据集和数据库的支持的词典,它所要解决的就是对象不等于数据的问题。LINQ体系结构图如下: 2. 什么是LINQ to SQL 通过上图我们已经可以看到了,LINQ to SQL其实就是LINQ对于数据库的支持,它是O/RM(对象关系映射)在.NET Framework 3.5中的一种实现,它允许你用.NET 的类来生成一个关系型的数据库。然后你可以用LINQ对从该对象中对数据库进行查询,更新/插入/删除。LINQ to SQL完全支持事务,视图和存储过程。它还提供了一种方便地在你的数据模型中对集合数据验证和业务逻辑规则的进行验证的方法。 在LINQ to SQL中,我们可以像下面的代码这样编写查询: Code1: AdventureWorksDWDataContext db = new AdventureWorksDWDataContext(); IEnumerableDimCustomer customers = from c in db.DimCustomer where c.CustomerAlternateKey == A select c; 在正式学习LINQ to SQL之前,我们需要先来熟悉一下C#3.0中的一些新特性,这些新的特性也是为了LINQ而产生的。 3. 隐含类型局部变量 这是一个语言层面的功能,局部变量被声明为var,这个声明被视为隐含类型局部变量声明,然后由编译器根据局部变量初始化表达式来推断变量的类型。如下面的声明: Code2: var integer = 10; var name = Terry Lee; var numbers = new int[] { 1, 2, 3 }; 要注意的是var在这里是仅仅是一个关键字,它并不是C#3.0中的一种新的类型,而是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,上面的语句相当于: int integer = 10; string name = Terry Lee; int[] numbers = new int[] { 1, 2, 3 }; 在Code2中,变量integer仍然具有强类型,可以做如下测试: Code4: var integer = 10; integer = Terry Lee; 编译时会报Cannot implicitly convert type string to int错误。 在这里我们将变量类型的推断任务交给了编译器,那就需要在声明的时候为变量赋值,也不能赋值为null,否则编译器也是无法推断的。另外,var只能用于局部变量,而不能用于字段和属性。 4. 自动属性 自动属性仍然是一个语言层面的功能,它可以使我们不用编写get/set操作以及字段,这一切都由编译其来完成。这样可以简化我们的代码,使我们的代码看起来更加的优雅。如下代码片断所示: Code5: public class Customer { public String Name { get; set; } public int Age { get; set; } } public class Demo { public static void Main() { Customer c = new Customer(); c.Name = TerryLee; } } 在自动属性中,我们可以为get/set操作使用不同的访问级别,也就是说你可以这样去写: Code6: public String Name { get; protected set; } 5. 对象初始化器 对象初始值主要允许在单一表达式中为多个属性或字段赋值,例如我们有一个Customer类: Code7: public class Customer { public String Name { get; set; } public int Age { get; set; } } 平时我们创建对象的常见模式是: Code8: public class Demo

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档