一、简介
1、什么是Linq?
LINQ(Language Integrated Query) 语言继承查询。
LINQ是一组语言特性和API,可以使用统一的方式编写各种查询。用于保存和检索来自不同数据源的数据,从而消除了编程语音和数据库之间的不匹配,以及为不同类型的数据源提供单个查询接口。
LINQ总是使用对象,因此可以使用相同的查询语法来查询和转换XML、对象集合、SQL数据库、ADO.NET数据库以及任何其他可用的LINQ提供程序格式的数据
2、LINQ主要包含三个部分:
1、LINQ to Objects     主要负责对象的查询。
2、LINQ to XML          主要负责XML的查询。
3、LINQ to ADO.NET  主要负责数据库的查询。
         LINQ to SQL
         LINQ to DataSet
         LINQ to Entities
3、LINQ的优势:
1、熟悉的语言:开发人员不必为每种类型的数据源或者数据格式学习心的语言。
2、更少的编码:相比传统的方式,LINQ减少了要编写的代码量。
3、可读性强:LINQ增加了代码的可读性,因此其他开发人员可以很轻松的理解和维护。
4、标准化的查询方式:可以使用相同的LINQ语法查询多个数据库。
5、类型检查:程序会在编译的时候提供类型检查。
6、只能感知提示:LINQ为通用集合提供只能感知提示。
7、整形数据:LINQ可以检索不同形状的数据。
二、为什么要使用LINQ?
举个栗子:现在遇到一个问题,对一个整数类型的数组,找到里面的偶数,并进行降序排序。不使用LINQ我们该如何解决?
1、定义一个整数数组list,用来存放所有的偶数
2、foreach遍历数组,找出给定数组内偶数,将偶数放入list数组
3、sort为升序排序,为了达到降序的目的,所以排序好后需要反转。
使用for循环比较麻烦,并且代码可读性、维护性差。
为了提高代码可读性,以及可维护性,我们使用委托来编写:
1、声明委托
2、定义一个Where方法,传入待处理的数组,委托
3、将foreach封装
4、调用方法时,再实现委托
在此解释下为什么要用委托?
  使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。
回归正题,虽然使用了委托增加了代码可读性,但是我们需要代码更紧凑和可读!所以我们引入Lambda表达式查询
下面我们演示如何使用LINQ和Lambda表达式根据特定条件来查询数组
var在此为一个隐式类型,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就解决问题了
这样写不仅不会影响性能因为它与显示声明编译后产生的中间语言代码(IL代码)是完全一样的(编译器根据变量的值,推到出变量的类型,才产生的IL代码)
注意:使用var时不能只声明而不赋值,因为不赋值编译器无法推到这个变量是什么类型
注意:此处调用的Where方法为IEnumerable下的方法,并非上面我们自己书写的方法
这样使用LINQ与Lambda表达式来编写代码,是不是变得简洁明了太多?代码变的更为紧凑,可读性更强。

LINQ学习(一):LINQ初认识相关推荐

  1. Linq 学习笔记(二)

    Linq 学习笔记(二) 下面就来介绍一些查询的示例: 1.Linq查询 var racers = from r in Formula1.GetChampions() where r.Wins > ...

  2. 最佳ASP.net之LINQ学习资料

    在使用LINQ过程中偶然有点心得想记录下来,没想到查阅到一个非常好的网站,直接转载了. 1. [推荐]LINQ系列文章,适合按部就班学习或查阅 http://kb.cnblogs.com/page/4 ...

  3. 一起谈.NET技术,Linq学习笔记

    写在前面 其实在09年就已经学习过Linq了,并被她那优美的语法所吸引,只是现在所在的公司还在使用VS2005在.Net2.0的框架下面的开发,所以Linq也很久没有用过了,最近看部门的同事对这个有些 ...

  4. Linq学习比较第2篇

    Linq学习比较第2篇 参考程序: //增             t_User user = new t_User();             user.UserName = "大气象& ...

  5. 自己的Linq学习心得

    导读:   1 预备知识 2 神马是LINQ 3 LINQ牛b的地方 4 剖析LINQ 5 LINQ扩展知识 预备知识: ① 扩展方法 .net framework 3.5中提供了扩展方法,何为扩展方 ...

  6. LINQ学习之旅——最后一站LTX之基础和编程接口所包含类的简介

    对LINQ TO SQL的内容讲解将告一段落,下面我们进入LINQ学习之旅的最后一站"LTX",即LINQ TO XML.当前XML技术在应用开发中显得越来越重要,已成为各类数据交 ...

  7. [深入学习C#]LINQ查询表达式详解(1)——基本语法、使用扩展方法和Lambda表达式简化LINQ查询

    此文章非原创,转载自诗人江湖老,原文地址 在Git上下载源码 在工程中我们少不了要定义类或者结构去储存数据,这些数据将被临时地储存在内存中,现在我们想要对其完成一些类似于查找.过滤等等常见的任务的时候 ...

  8. Linq初级班 Linq To XML体验(基础篇)

    LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还 ...

  9. LINQ体验(6)——LINQ to SQL语句之Join和Order By

    LINQ体验(6)--LINQ to SQL语句之Join和Order By Join操作 适用场景:在我们表关系中有一对一关系,一对多关系,多对多关系等.对各个表之间的关系,就用这些实现对多个表的操 ...

最新文章

  1. 一个fork短码的扩展版本
  2. 用行为级描述方式实现一个加法器电路(基于ISE的设计)(2输入1位全加器电路)
  3. 将IDEA工程代码提交到Github
  4. Internet Explorer 6 中的 CSS 增强功能
  5. Apache ab 压力测试工具
  6. squid 的配置详解 (转)--SeriesIV
  7. 最大似然估计、MAP、贝叶斯估计
  8. 二分查找法最大最小比较次数
  9. 测绘的行业标准规范和国家标准全部可下载
  10. 系统自带命令subst.exe创建虚拟软驱
  11. 前端web开发学习路线图
  12. 【许晓笛】 EOS智能合约案例解析(1) 1
  13. 微信小程序:智力考验看成语猜古诗句好玩解闷小游戏下载
  14. 跨考计算机408的学习心得技巧分享
  15. 调研当前大学生的三个痛点
  16. 仿微信、微博发朋友圈,文字+图片+视频
  17. 笔记本利用网线和wifi同时连接办公网跟互联网
  18. Unable to start web server; nested exception is org.springframework.context.ApplicationContextExcept
  19. 了解lammps中NVE/NVT/NPT三种系综的特性和区别
  20. 周志华《机器学习》课后习题3.410折交叉验证法和留一法UCI实例比较

热门文章

  1. 雷哥,这个你有点想当然了吧
  2. 苹果库克任职首年需避免十大错误:授权iOS
  3. 人文地理学部分复习思考题答案
  4. 测试——解决MonkeyRunner无法运行的问题
  5. 保研日记--北京交通大学计算机学院
  6. 阿里云企业邮箱如何开通使用
  7. 电商API接口系列,item_get-获得淘宝商品详情
  8. 智慧校园管理系统 前台任意文件上传漏洞
  9. 论文解析:Inception-V3设计思路分析
  10. 001-Java入门