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. 请以excel管理你的接口测试用例

    闲话休扯,上需求:自动读取.执行excel里面的接口测试用例,测试完成后,返回错误结果并发送邮件通知. 分析: 1.设计excel表格2.读取excel表格3.拼接url,发送请求4.汇总错误结果.发 ...

  2. 九度oj题目1012:畅通工程

    题目1012:畅通工程 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6643 解决:2863 题目描述: 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇. ...

  3. Xcode10 闪退问题

    最新更新了iOS12,mac10.13.6,xcode10之后,打开之前的项目,只要进行import,xcode就会闪退.那么就来看一下解决方案: Xcode10 新增了一个构建系统起名“New Bu ...

  4. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  5. Java基础之 学java从宝宝的命令行做起

    JAVA学习笔记 JAVA命令行 在当前文件的命令行下 编译:输入命令javac GetGreeting.java 执行 命令 Java GetGreeting 有package包的程序 1.到文件当 ...

  6. Spring课程 Spring入门篇 5-1 aop基本概念及特点

    概念: 1 什么是aop及实现方式 2 aop的基本概念 3 spring中的aop 1 什么是aop及实现方式 1.1 aop,面向切面编程,比如:唐僧取经需要经过81难,多一难少一难都不行.孙悟空 ...

  7. OLEDB存取BLOB型数据

    现代数据库系统除了支持一些标准的通用数据类型以外,大多数还支持一种称之为BLOB型的数据. BLOB全称为big large object bytes, 大二进制对象类型,这种类型的数据通常用于存储文 ...

  8. jQuery三——筛选方法、事件

    一.jquery常用筛选方法 以下为jquery的常用筛选方法: 代码示例如下: <!DOCTYPE html> <html lang="en"> < ...

  9. ie7下属性书写不规范造成的easyui 弹窗布局紊乱

    (一)在ie7下 弹窗只是普通页面 (二)控制台报错 (三)原因: (四)解决 去掉 data-options 属性里的  ,   就可以了

  10. 从软件工程师的角度看MacBook Air的几个设计亮点

    我多年从事软件开发和运营工作,从未跟“设计”间断过.现在在设计一个全新saas产品:超级表格(www.domypp.com).最近买了台苹果最新款的笔记本电脑MacBook Air,从该产品功能设计和 ...