LinQ是3.0新加的语法。用起来比较方便,我们可以使用较简单的方法来过滤数据和处理数据。

使用场景: 可以看到LINQ使用场景还是很多的。现在写项目基本都会用到。

在出现委托之前,我们来查找对象

在C#2.0之前,我们必须使用“foreach”或“for”循环来遍历集合来查找特定的对象。例如,我们必须编写下面的代码来查找年龄在12岁到20岁之间(13到19岁的学生)的所有学生对象:

使用委托在C#2.0中查找集合中的元素

从C#3.0开始:

相比上面而言简单了很多,这就是LINQ带来的便捷。

LINQ的优点:

  • 熟悉的语言:开发人员不必为每种类型的数据源或数据格式学习新的查询语言。
  • 编码较少:与传统方法相比,它减少了要编写的代码量。
  • 可读代码: LINQ使代码更易读,所以其他开发人员可以轻松理解和维护代码。
  • 查询多个数据源的标准化方式:可以使用相同的LINQ语法来查询多个数据源。
  • 编译查询的时间安全性:在编译时提供对象的类型检查。
  • 智能感知支持: LINQ为通用集合提供智能感知。
  • 整形数据:您可以检索不同形状的数据。
 

LINQ API

LINQ只不过是实现IEnumerable和IQueryable接口的类的扩展方法的集合。System.Linq命名空间包含LINQ必需的类和接口。EnumerableQueryable是包含扩展方法的两个主要的LINQ API静态类。

枚举:

枚举类包含实现IEnumerable <T>接口的类的扩展方法,这包括System.Collections.Generic名称空间中的所有集合类型,如List <T>,Dictionary <T>,SortedList <T>,Queue <T> ,HashSet <T>,LinkedList <T>等

可查询:

可查询类包括用于实现类的扩展方法的IQueryable <T>接口。IQueryable <T>用于针对数据类型已知的特定数据源提供查询功能。例如,实体框架api实现IQueryable <T>接口来支持像SQL Server这样的底层数据库的LINQ查询。

所以对于继承IEnumerable&Queryable的数据都可以使用LINQ。

要记住的要点:

  1. 使用System.Linq命名空间来使用LINQ。
  2. LINQ api包含两个主要的静态类Enumerable&Queryable。
  3. 静态Enumerable类包含实现IEnumerable <T>接口的类的扩展方法。
  4. IEnumerable <T>类型的集合是内存中的集合,如List,Dictionary,SortedList,Queue,HashSet,LinkedList
  5. 静态Queryable类包含实现IQueryable <T>接口的类的扩展方法
  6. 远程查询提供程序实现IQueryable <T>。例如。Linq to SQL,LINQ to DataSet,LINQ to XML,LINQ to Eneity等

LINQ查询语法

向IEnumerable集合或IQueryable数据源写入LINQ查询有两种基本方法。

  1. 查询语法或查询表达式语法
  2. 方法语法或方法扩展语法或Fluent

查询语法:

要记住的要点:

  1. 如名称所示,查询语法与SQL(结构查询语言)语法相同。
  2. 查询语法以from子句开始,可以以SelectGroupBy子句结束。
  3. 使用过滤,加入,分组,排序操作符等各种其他opertors来构建所需的结果。
  4. 隐式类型变量 - var可以用来保存LINQ查询的结果。

LINQ方法语法与Lambda表达式

方法语法(也称为流利语法)使用EnumerableQueryable静态类中包含的扩展方法,类似于您将如何调用任何类的扩展方法。

方法语法一般都会配合Lambda表达式进行条件过滤

要记住的要点:

  1. Lambda表达式是表示匿名方法的一种较短的方式。
  2. Lambda表达式语法: parameters => body expression
  3. Lambda表达式可以有零参数。
  4. Lambda Expression可以在括号()中有多个参数。
  5. Lambda Expression可以在大括号{}中的正文表达式中包含多个语句。
  6. 可以将Lambda表达式分配给Func,Action或Predicate委托。
  7. Lambda表达式可以以与委托类似的方式调用。

LinQ 简介的更多相关文章

  1. .NETCoreCSharp 中级篇2-3 Linq简介

    .NETCoreCSharp 中级篇2-3 本节内容为Linq及其拓展方法.Linq中表达式树的使用 简介 语言集成查询(LINQ)是一系列直接将查询功能集成到C#语言的技术统称.数据查询历来都表示为 ...

  2. linq简介

    语言集成查询(Language INtegrated Query,LINQ)是一项微软技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,可支持Visual Basic .N ...

  3. LINQ简介和LINQ to SQL语句之Where

    LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...

  4. C# Linq简介

    LInq是Language Integrated Query的简称,它是微软在.net framework 3.5里面新加入的特性,用以简化查询查询操作.它主要包含了3块,Linq to Object ...

  5. c# in deep 之LINQ简介(1)

    前两天公司进了一批书,在借阅jon skeet的c# in deep收获颇大,本书特点是介绍了不同版本的c#所增加的新特性.今天先写一下书中对linq的描述. 很多初学者在使用VS2010或2013写 ...

  6. 一、Linq简介

    语言集成查询Language Integrated Query(LINQ)是一系列将查询功能集成到C#语言的技术统称. 传统数据查询的缺点: 简单的字符串查询,没有编译时类型检查或Intellisen ...

  7. LINQ教程一:LINQ简介

    一.为什么要使用LINQ 要理解为什么使用LINQ,先来看下面一个例子.假设有一个整数类型的数组,找到里面的偶数并进行降序排序. 在C#2.0以前,如果要实现这样的功能,我们必须使用'foreach' ...

  8. 转:LINQ教程一:LINQ简介

    原文地址:https://www.cnblogs.com/dotnet261010/p/8278793.html 一.为什么要使用LINQ 要理解为什么使用LINQ,先来看下面一个例子.假设有一个整数 ...

  9. Linq的简介和基础知识学习

    学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...

随机推荐

  1. 自己用 python 实现 base64 编码

    自己用 python 实现 base64 编码 base64 编码原理 二进制文件中包含有很多无法显示和打印的字符,二进制的数据一般以 ASCII 码形式(8 bit,即一个字节)存储,8 bit 可 ...

  2. flutter Failed to setup Skia Gr context导致白屏

    添加 --enable-software-rendering参数运行 G:\soft\flutter\project\hello_world> flutter run --enable-soft ...

  3. ADO.NET教程(1)初识ado.net

    ADO.NET简介 ADO.NET使用到的类 需掌握的方法和属性 ado.net连接实例 ADO.NET的名称起源于ADO(ActiveX Data Objects),是一个COM组件库,用于在以往的 ...

  4. android框架Java API接口总注释/**@hide*/和internal API

    Android有两种类型的API是不能经由SDK访问的 l 第一种是位于com.android.internal包中的API我,位于frameworks/base/core/java/com/andr ...

  5. jquery解析xml

    更多的项目都是在解析json,今天临时让解析几个xml文件,其实都一样,总结一下吧. 例如我们有这样一个xml文件 <?xml version="1.0" encoding= ...

  6. MyBatis 中 sqlmapconfig核心标签typeAliases配置说明

    标签说明 在 MyBatis 的 sql 映射配置文件中,需要使用 paramterType.resultType 来设置 sql 语句的输入输出参数,一般参数都是基本的数据类型或封装类型,但都需要声 ...

  7. python作业-网络编程

    1.什么是C/S架构? 答:C指的是client(客户端软件),S指的是Server(服务端软件) 2.互联网协议是什么?分别介绍五层协议中每一层的功能? 答:互联网的核心就是由一堆协议组成.如果把计 ...

  8. Zepto结合Swiper的选项卡

    我们昨天说了关于Angular的选项卡,那今天就说一下Swiper的选项卡吧! 今天的选项卡是Zepto结合Swiper的选项卡,咱么明天再说纯纯的Swiper的吧! 既然是关于Zepto和Swipe ...

  9. CocoaPods管理的项目移植到别人电脑后找不到头文件

    CocoaPods管理的项目移植到别人电脑后找不到头文件 在TARGETS -> Search Paths -> User Header Search Paths 中 写入 ${SRCRO ...

  10. 搭建JUnit环境

    1.下载 JUnit,这里用JUnit 4.7 下载链接: http://pan.baidu.com/s/1c23n7LQ 密码: i18e 2.可以直接 build path 引入:也可以创建 Us ...