语言集成查询 (LINQ) 是一系列直接将查询功能集成到 C# 语言的技术统称。
为什么需要LINQ?
查询是一种从数据源检索数据的表达式。 查询通常用专门的查询语言来表示。 随着时间的推移,人们已经为各种数据源开发了不同的语言;例如,用于关系数据库的 SQL 和用于 XML 的 XQuery。 因此,开发人员对于他们必须支持的每种数据源或数据格式,都不得不学习一种新的查询语言。 LINQ 通过提供处理各种数据源和数据格式的数据的一致模型,简化了这一情况。 在 LINQ 查询中,始终会用到对象。 可以使用相同的基本编码模式来查询和转换 XML 文档、SQL 数据库、ADO.NET 数据集、.NET 集合中的数据以及 LINQ 提供程序可用的任何其他格式的数据。
简单来说,LINQ简化了对不同数据源的查询,LINQ通过对象的方式来对数据源的内容进行查询,筛选,排序,转换等操作。
常见用途:
- .NET原生的集合(List,Array,Dictionary等)
- 数据库实体对象
- XML文档
- Json文档
LINQ的两种写法:
1、查询表达式(用于比较复杂的排序,统计等,更接近Sql表达式)
2、链式表达式(有很多比较方便的扩展方法)
// 查询表达式示例:
int[] scores = { 97, 92, 81, 60 };
IEnumerable<int> scoreQuery =
from score in scores
where score > 80
select score;
// 链式表达式示例:
IEnumerable<int> scoreQuery = scores.Where(x => x > 80);
重要概念:
- 延迟执行:查询变量本身只存储查询命令。只有产生消耗时才会真的去执行。
- 消耗:消耗指的是对查询变量进行进一步操作。以下操作都是消耗。
- 遍历
- ToList() , ToArray() , ToDictionary()
- Count() , Min() , Max() , Sum()
- Take() , First() , Last()
更多内容可以翻阅C#官方文档:语言集成查询(LINQ)