Day 02 LINQ的基础用法
LINQ 基础
1. 什么是 LINQ?
LINQ(Language Integrated Query,语言集成查询)是 C# 3.0 引入的一种查询语法,它让你能用类似 SQL 的语法来操作集合(对象、数组、XML、数据库数据等)。正是因为LINQ可以像SQL一样操作数据库,所以也被人戏称为db(database)。
核心思想:用一种统一的方式查询不同的数据源。
比如你要筛选一个数组中的偶数:
1 | using System; |
输出:
1 | 偶数有: |
这段代码看起来是不是有点像 SQL?
1 | SELECT n FROM numbers WHERE n % 2 == 0; |
查询表达式语法(Query Syntax)
LINQ 的语法参考了 SQL,例如 from ... where ... select
,让 C# 程序员不用学习另一套 DSL,就能在代码里写“查询语句”。
2. 方法语法(Method Syntax)
除了查询语法,LINQ 还有一种 链式方法写法,更贴近函数式编程。在C#中,LINQ 的方法语法使用了一系列扩展方法,这些方法定义在 System.Linq
命名空间中。(在C#里习惯称函数为方法。)
1 | using System; |
筛选名字长度 <= 4 的人,并按名字长度升序排序。
输出:
1 | 名字长度 <= 4: |
3. LINQ 常用操作
操作符 | 功能 | 示例 |
---|---|---|
Where |
过滤数据 | list.Where(x => x > 10) |
Select |
投影(选择字段) | list.Select(x => x.Name) |
OrderBy |
排序 (默认升序) | list.OrderBy(x => x.Age) |
GroupBy |
分组 | list.GroupBy(x => x.Category) |
Join |
连接(类似 SQL JOIN) | list1.Join(list2, ...) |
4. LINQ 查询数据库的例子
如果你用 Entity Framework,LINQ 可以直接写 SQL 风格的查询:
1 | using (var context = new MyDbContext()) |
这里的 context.Students
其实不是数组,而是 IQueryable,LINQ 会把表达式树翻译成 SQL:
1 | SELECT [s].[Name], [s].[Age] |
所以看起来就是 “像写 SQL 一样写 C# 代码”。
5. 总结
- LINQ = 统一的查询语法,让你用一种写法查询不同数据源。
- 它借鉴了 SQL 语法(
from / where / select
),看起来很像数据库操作。 - 既能操作内存数据,也能查询数据库、XML、集合等。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.