C#图解教程(第四版)小笔记——LINQ

本文是C#图解教程第四版的小笔记,重点介绍了LINQ,包括匿名类型、查询语法与方法语法、返回值、查询表达式结构及其组成部分(如from、join、let、orderby、group by)。还详细讲解了Linq to XML的操作,如创建XML树、查询节点、添加子节点以及XML相关元素如XAttribute、XComment、XDeclaration的使用。
摘要由CSDN通过智能技术生成

Linq

Language Integrated Query语言集成查询。
可以用于从数据库、程序对象的集合、XML文档中查询数据。
from、in、let、join、into、where、orderby、select、group…by

int[] numbers = {
    2, 12, 5, 15};	//数据源
IEnumerable<int> lowNums = from n in numbers where n < 10 select n;		//定义并存储查询
foreach(var x in lowNums){
   Console.WriteLine(x);}

Linq提供程序(provider)
在这里插入图片描述

匿名类型

/*只能用var*/var student = new /*没有类名*/{
   name = "abc", age = 12};
//student的类型为:<>f__AnonymousType0`2[System.String,System.Int32]

匿名类型对象的属性都是只读的。
匿名类型被构造后,编译器创建了这个类型的对象。
在这里插入图片描述
如果编译器遇到了另一个具有相同的参数名、相同的推断类型和相同顺序的匿名类型,它会重用这个类型并直接创建新的实例,不会创建新的匿名类型。

方法语法和查询语法

  • 查询语法(query syntax)
    声明式(declarative),查询描述的是你想返回的东西,不指明如何执行这个查询。
  • 方法语法(method syntax)
    命令式(imperative),指明查询方法调用的顺序。

两种语法在运行时没有性能上的差异。
在这里插入图片描述

返回值

LINQ查询可返回一个可枚举的数据集,或一个称为标量(scalar)的单一值。
在这里插入图片描述

  • 返回可枚举的数据集
    查询一直到处理枚举时才会被执行。
    若枚举被执行多次,查询就会执行多次。
    在进行遍历之后,若查询执行之前数据有改动,则查询会使用新的数据。
  • 返回标量
    查询立即执行,并把结果保存在查询变量(等号左边的变量)中。

查询表达式的结构

在这里插入图片描述

from

指定了要作为数据源使用的数据集合,引入了迭代变量。
from子句声明式地规定集合中的每个项都要被访问,并不指定顺序。
from子句创建可以执行查询的后台代码对象,只有在程序的控制流遇到访问查询变量的语句时,才执行查询。
在这里插入图片描述
在这里插入图片描述

jion

结合多个集合的数据。
联结操作接受两个集合然后创建一个临时的对象集合,每个对象包含原始集合对象的所有字段。
比较相等性只能用equals关键字,不能用“==”。
在这里插入图片描述

var query = from s in students
			join c in studentsInCourses on s.StID equals c.StID

let

保存一个需要在其他运算中使用的标识符,标识符存储了某些运算后的结果。

var groupA = new {
   1, 2, 3
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 1 LINQ查询结果集 1 2 System.Array 数组 1 2.1 基于System.Array定义数组 1 2.2 基于类型定义数组 1 2.3 数组元素的清空 1 2.4 System.Array类静态成员 1 2.5 不用循环填充数组 1 2.6 数组类实例成员 2 3 System.Collections 集合 2 3.1 ArrayList 2 3.1.1 实例成员 2 3.1.2 静态成员 2 3.2 List<T> 3 3.3 Hashtable 6 3.4 SortedList 6 3.5 SortedList<TKey,TValue> 7 3.6 Queue<T> 8 3.7 Stack<T> 8 3.8 LinkedList<T> 8 3.9 HashSet<T> 9 4 System.Linq 10 4.1 System.Linq.Enumerable 10 4.2 System.Linq.Queryable 10 4.3 System.Linq.Lookup <TKey,TElement> 10 4.4 System.Linq.Expressions.Expression 10 5 接口 10 5.1 IEnumerable 、IEnumerator 10 5.1.1 正常使用 10 5.1.2 C#的 yield 12 5.2 IEnumerable <T> 12 5.3 IEnumerator <T> 12 5.4 ICollection 12 5.5 ICollection <T> 13 5.6 IList 13 5.7 IList <T> 13 5.8 IEqualityComparer 13 5.9 IEqualityComparer <T> 13 5.10 IDictionary 13 5.11 IDictionary <TKey,TValue> 13 5.12 IDictionaryEnumerator 13 5.13 IComparer 13 5.13.1 接口方法说明 int Compare(object x, object y) 13 5.13.2 ArrayList.Sort (IComparer) 方法 13 5.14 IComparer <T> 14 5.14.1 接口方法override int Compare(T x, T y)说明 14 5.14.2 List.Sort (IComparer) 方法 14 5.15 System.Linq.IGrouping<T> 14 5.16 System.Linq.ILookup<TKey,TElement> 14 5.17 System.Linq.IOrderedEnumerable<T> 14 5.18 System.Linq.IOrderedQueryable 14 5.19 System.Linq.IOrderedQueryable<T> 15 5.20 System.Linq.IQueryable 15 5.21 System.Linq.IQueryable<T> 15 5.22 System.Linq.IQueryProvider 15 6 集合扩展方法 15 6.1 集合扩展方法的实现:一个Where的例子 15 6.2 延迟类 15 6.2.1 Select 选择 16 6.2.2 SelectMany 选择 16 6.2.3 Where 条件 16 6.2.4 OrderBy 排序升 17 6.2.5 OrderByDescending 排序降 17 6.2.6 GroupBy 分组 17 6.2.7 Join 联合查询 18 6.2.8 GroupJoin 18 6.2.9 Take 获取集合的前n个元素 19 6.2.10 Skip 跳过集合的前n个元素 19 6.2.11 Distinct 过滤集合中的相同项 19 6.2.12 Union 连接不同集合,自动过滤相同项 19 6.2.13 Concat 连接不同集合,不会自动过滤相同项 19 6.2.14 Intersect 获取不同集合的相同项(交集) 20 6.2.15 Except 从某集合中删除其与另一个集合中相同的项 20 6.2.16 Reverse 反转集合 20 6.2.17 TakeWhile 条件第一次不成立就跳出循环 20 6.2.18 SkipWhile 条件第一次不成立就失效,将后面的数据全取 20 6.2.19 Cast 将集合转换为强类型集合 21 6.2.20 OfType 过滤集合中的指定类型 21 6.3 不延迟(浅复本) 21 6.3.1 Single 集合中符合条件的唯一元素,浅复本 21 6.3.2 SingleOrDefault 集合中符合条件的唯一元素(没有则返回类型默认值),浅复本 21 6.3.3 First 集合的第一个元素,浅复本 21 6.3.4 FirstOrDefault 集合中的第一个元素(没有则返回类型默认值),浅复本 22 6.3.5 Last 集合中的最后一个元素,浅复本 22 6.3.6 LastOrDefault 集合中的最后一个元素(没有则返回类型默认值),浅复本 22 6.3.7 ElementAt 集合中指定索引的元素,浅复本 22 6.3.8 ElementAtOrDefault 集合中指定索引的元素(没有则返回类型默认值),浅复本 22 6.3.9 Contains 判断集合中是否包含有某一元素 22 6.3.10 Any 判断集合中是否有元素满足某一条件 22 6.3.11 All 判断集合中是否所有元素都满足某一条件 23 6.3.12 SequenceEqual 判断两个集合内容是否相同 23 6.3.13 Count 、LongCount集合中的元素个数 23 6.3.14 Average 、Sum集合平均值求和 23 6.3.15 Max、Min 集合最大值,最小值 24 6.3.16 Aggregate 根据输入的表达式获取一个聚合值 24 6.3.17 DefaultIfEmpty 查询结果为空则返回默认值,浅复本 24 6.3.18 ToArray 将集合转换为数组,浅复本 24 6.3.19 ToList 将集合转换为List<T>集合,浅复本 25 6.3.20 ToDictionary 将集合转换为<K, V>集合,浅复本 25 7 Lambda表达式 25 7.1 例1(比效) 25 7.2 例2(多参) 27 7.3 例3(list.Where) 27 7.4 Lambda表达式中Lifting 28 8 QuerySyntax 查询语法 29 8.1 from in select 30 8.2 orderby 排序 30 8.3 group by into 分组 31 8.4 join in on equals 联合查询 33 8.5 into 汇总 33 9 DataSource 数据绑定 34
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值