一、简介
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. MPB:山大倪金凤组-白蚁肠道木质纤维素降解细菌的分离与培养
  2. 【Android 逆向】Android 逆向通用工具开发 ( Android 逆向通用工具组成部分 | 各模块间的关联 )
  3. Java基础day17
  4. python基本语法 关于雷达模拟实践
  5. linux procs单位m,Linux
  6. python遍历列表中所有元素_python如何遍历列表所有元素?
  7. idea双击打不开的解决方案
  8. 文件 MD5 SHA1 SHA256 SHA512 校验码生成工具 V1.3
  9. Xcelsius数据源概述
  10. Ace - Responsive Admin Template
  11. 宁愿吃生活的苦,也不愿坚持学习
  12. 分布式与传统的对比简介
  13. 正一派道家奇门遁甲排盘算法python程序
  14. PIC16F C语言测频率程序,PIC单片机C语言程序—实例5
  15. DDD如何设计落地?(库存,产品账示例)
  16. Java中关于超长字符串压缩,解压缩问题
  17. 图书管理系统--新增图书
  18. Nacos 是如何同时实现AP与CP的
  19. 实现线性回归的梯度下降法算法,解决糖尿病预测问题,输出mse和R2的值。
  20. for()循环、forEach()、$.each()

热门文章

  1. 无法启动此程序 因为计算机中丢失xlive,xlive.dll没有被指定在windows运行
  2. 『高级篇』docker容器来说微服务优势和不足(四)
  3. 教务管理系统JavaWeb项目
  4. java.sql.SQLException: connection holder is null
  5. 商城转账到卖家账户的支付宝方案:支付宝单笔转账
  6. 给自己的机械臂选择合适的末端夹爪
  7. 迅为3588开发板Linux源码包编译Buildroot
  8. Tensorflow实战之实现 Softmax Regression识别手写数字(学习笔记)
  9. java 删除字符串左边空格和右边空格 trimLeft trimRight
  10. jQuery Mobile的安装