C#中的LINQ是什么 - 从入门到精通掌握查询表达式
作者:归人云淡风轻
时间:2025-12-21
浏览:0
LINQ是C#内建的类型安全查询能力,核心为统一声明式操作、三步固定流程(准备数据源→构建查询表达式→触发执行)、两种等价写法(查询表达式与方法链)及分层语义操作(筛选/投影/排序/聚合),依托IEnumerable<T>/IQueryable<T>契约实现跨数据源支持。
LINQ是C#内建的类型安全查询能力,核心为统一声明式操作、三步固定流程(准备数据源→构建查询表达式→触发执行)、两种等价写法(查询表达式与方法链)及分层语义操作(筛选/投影/排序/聚合),依托IEnumerable
/IQueryable 契约实现跨数据源支持。

LINQ(Language Integrated Query,语言集成查询)是 C# 中一套内建的、类型安全的数据查询能力,它不是独立工具或库,而是直接嵌入语言的语法和扩展方法体系。它的核心价值在于:用统一、声明式的方式操作各种数据源,不用切换思维模式,也不用拼接字符串查数据库。
LINQ 的三个固定步骤
所有 LINQ 查询都严格遵循三步逻辑,缺一不可:
- 准备数据源:必须是支持
IEnumerable或IQueryable的类型,比如List、数组、string[],甚至 Entity Framework 的DbSet;XML 文档经XElement.Load()后也自动变成可查的IEnumerable - 构建查询表达式:此时不执行任何操作,只是定义“要什么”,比如
from x in list where x > 5 select x * 2—— 这行代码运行后得到的是一个IEnumerable对象,不是结果数据 - 触发执行:只有真正遍历(
foreach)、调用ToList()、First()、Count()等终结方法时,查询才真正运行;这是延迟执行的关键体现
两种写法,本质一样
查询表达式语法(SQL 风格)和方法链语法(点号调用)功能完全等价,编译器会把前者自动转成后者:
- 查询表达式:适合多步骤、结构清晰的场景,比如带
join、group by、orderby的复杂查询,读起来接近自然语言 - 方法链:更贴近 C# 编程习惯,尤其适合动态组合条件(比如根据参数决定是否加
.Where()),也更容易配合 Lambda 表达式做高阶操作
常用操作不是“函数列表”,而是语义组合
LINQ 方法不是孤立的工具,而是按数据处理阶段分层协作:
- 筛选:用
Where(),支持任意布尔表达式,可链式叠加多个条件 - 投影:用
Select()改变每个元素形态,比如从Customer只取Name和City,生成匿名类型或新类实例 - 排序与分组:
OrderBy()/ThenBy()控制顺序;GroupBy()按键归类,返回IGrouping序列 - 聚合:
Count()、Sum()、Average()等属于“终结操作”,一调就执行,不返回可枚举对象
别忽略它的底层契约
LINQ 能跨数据源工作,靠的是抽象统一接口:
IEnumerable对应内存集合(LINQ to Objects),走的是本地迭代IQueryable对应远程数据源(如数据库),表达式树会被翻译成 SQL 执行,不是先拉全量再过滤- 自定义类型只要实现
IEnumerable或提供GetEnumerator(),就能被 LINQ 查询,无需额外适配
基本上就这些。掌握这四块,你就站在了 LINQ 的主干道上,后续学 EF、处理 JSON 或 XML 都只是换数据源而已。
作者最新文章
荣耀MagicOS 11发布计划与Agent Harness架构解析
2026-09-08 19:23
AI重构企业业务架构:超聚变“智企”范式核心解析
2026-09-08 18:39
PDF合并工具怎么选?在线合并5步实操指南
2026-09-04 17:05
PDF图片压缩工具推荐与批量处理实操指南
2026-09-03 12:14
照片如何转成PDF格式?三种图片转PDF操作方法
2026-09-03 11:04
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































