什么是linq
语言集成查询 (LINQ) 是一组基于将查询功能直接集成到 C# 语言中的技术的名称。传统上,对数据的查询表示为简单的字符串,在编译时没有类型检查或 IntelliSense 支持。此外,您必须为每种类型的数据源学习不同的查询语言:SQL 数据库、XML 文档、各种 Web 服务等等。使用 LINQ,查询是一流的语言结构,就像类、方法、事件一样。您可以使用语言关键字和熟悉的运算符针对强类型的对象集合编写查询。LINQ 系列技术为对象 (LINQ to Objects)、关系数据库 (LINQ to SQL) 和 XML (LINQ to XML) 提供一致的查询体验。
之前我们查询集合中的数据一般会使用for或foreach语句来进行查询,Linq 使用查询表达式来进行查询,Linq 表达式比之前用for或forach的方式更加简洁,比较容易添加筛选条件。
将下列int集合整体每个元素扩大10倍
var num = new List<int>() { 1,2,3,4,5}; IEnumerable<int> query = num.Select(n => n * 10); foreach (int n in query) Console.WriteLine(n);
从上面的例子可以看出,linq集合在查询是简单了很多,并且很容易添加筛选条件。
linq原理
编译器是如何处理这些查询表达式的呢,为了理解好这个问题就要先解释一下linq的底层思想。
1.序列
序列是linq的基础。序列是通过过IEnumerable和IEnumerable<T>接口进行封装,如果某个类型实现了IEnume