LinQ 简介
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必需的类和接口。Enumerable和Queryable是包含扩展方法的两个主要的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。
要记住的要点:
- 使用System.Linq命名空间来使用LINQ。
- LINQ api包含两个主要的静态类Enumerable&Queryable。
- 静态Enumerable类包含实现IEnumerable <T>接口的类的扩展方法。
- IEnumerable <T>类型的集合是内存中的集合,如List,Dictionary,SortedList,Queue,HashSet,LinkedList
- 静态Queryable类包含实现IQueryable <T>接口的类的扩展方法
- 远程查询提供程序实现IQueryable <T>。例如。Linq to SQL,LINQ to DataSet,LINQ to XML,LINQ to Eneity等
LINQ查询语法
向IEnumerable集合或IQueryable数据源写入LINQ查询有两种基本方法。
- 查询语法或查询表达式语法
- 方法语法或方法扩展语法或Fluent
查询语法:

要记住的要点:
- 如名称所示,查询语法与SQL(结构查询语言)语法相同。
- 查询语法以from子句开始,可以以Select或GroupBy子句结束。
- 使用过滤,加入,分组,排序操作符等各种其他opertors来构建所需的结果。
- 隐式类型变量 - var可以用来保存LINQ查询的结果。
LINQ方法语法与Lambda表达式
方法语法(也称为流利语法)使用Enumerable或Queryable静态类中包含的扩展方法,类似于您将如何调用任何类的扩展方法。
方法语法一般都会配合Lambda表达式进行条件过滤


要记住的要点:
- Lambda表达式是表示匿名方法的一种较短的方式。
- Lambda表达式语法:
parameters => body expression - Lambda表达式可以有零参数。
- Lambda Expression可以在括号()中有多个参数。
- Lambda Expression可以在大括号{}中的正文表达式中包含多个语句。
- 可以将Lambda表达式分配给Func,Action或Predicate委托。
- Lambda表达式可以以与委托类似的方式调用。
LinQ 简介的更多相关文章
- .NETCoreCSharp 中级篇2-3 Linq简介
.NETCoreCSharp 中级篇2-3 本节内容为Linq及其拓展方法.Linq中表达式树的使用 简介 语言集成查询(LINQ)是一系列直接将查询功能集成到C#语言的技术统称.数据查询历来都表示为 ...
- linq简介
语言集成查询(Language INtegrated Query,LINQ)是一项微软技术,新增一种自然查询的SQL语法到.NET Framework的编程语言中,可支持Visual Basic .N ...
- LINQ简介和LINQ to SQL语句之Where
LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译时语法检查,丰富的元数据,智能感 ...
- C# Linq简介
LInq是Language Integrated Query的简称,它是微软在.net framework 3.5里面新加入的特性,用以简化查询查询操作.它主要包含了3块,Linq to Object ...
- c# in deep 之LINQ简介(1)
前两天公司进了一批书,在借阅jon skeet的c# in deep收获颇大,本书特点是介绍了不同版本的c#所增加的新特性.今天先写一下书中对linq的描述. 很多初学者在使用VS2010或2013写 ...
- 一、Linq简介
语言集成查询Language Integrated Query(LINQ)是一系列将查询功能集成到C#语言的技术统称. 传统数据查询的缺点: 简单的字符串查询,没有编译时类型检查或Intellisen ...
- LINQ教程一:LINQ简介
一.为什么要使用LINQ 要理解为什么使用LINQ,先来看下面一个例子.假设有一个整数类型的数组,找到里面的偶数并进行降序排序. 在C#2.0以前,如果要实现这样的功能,我们必须使用'foreach' ...
- 转:LINQ教程一:LINQ简介
原文地址:https://www.cnblogs.com/dotnet261010/p/8278793.html 一.为什么要使用LINQ 要理解为什么使用LINQ,先来看下面一个例子.假设有一个整数 ...
- Linq的简介和基础知识学习
学习LINQ之前,我们要知道LINQ是干什么,解决什么问题的,怎样学习? 一.LINQ简介 1.什么是LINQ? 什么是LINQ?LINQ中文翻译为语言集成查询(Language Integrated ...
随机推荐
- Grafana监控可视化环境搭建
依赖库Go 1.6NodeJS v4+sqlite3GO 环境搭建 vi /etc/profile export GOPATH="/root/go" export GOROOT=& ...
- 使用SeaJS实现模块化JavaScript开发【转】
前言 SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,SeaJS不会扩展封 ...
- jquery通过submit()和serialize()提交表单
<script type="text/javascript"> $(function() { $('#form1').submit(function() { //当提交 ...
- pat1003. Emergency (25)
1003. Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue As an emerg ...
- Colorbox - a jQuery lightbox
http://www.jacklmoore.com/colorbox/http://www.jacklmoore.com/colorbox/example5/ <script type=&quo ...
- mysql七:索引原理与慢查询优化(待完整)
一.介绍 索引在MySQL中也叫做“键”,是存储引擎用于快速找到记录的一种数据结构.索引对于良好的性能非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要. 索引优化应该是对查询性能优 ...
- LOJ#2552. 「CTSC2018」假面(期望 背包)
题意 题目链接 Sol 多年以后,我终于把这题的暴力打出来了qwq 好感动啊.. 刚开始的时候想的是: 设\(f[i][j]\)表示第\(i\)轮, 第\(j\)个人血量的期望值 转移的时候若要淦这个 ...
- javascript12个你必须掌握的技能
网站建设的时候,作为码农,总喜欢写一些高效且省事的代码,这里,dbestech为你提供关于JavaScript的使用技巧点. 1. 空(null, undefined)验证 当我们创建了一个新的变量, ...
- em和px
在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ...
- java面试题之----mysql表优化方案
本文转载自segmentfault,原文链接:https://segmentfault.com/a/1190000006158186. 当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考 ...