C# LINQ 基础
介绍
LINQ(Language Integrated Query)是 C# 中用于查询和操作数据的强大工具。它允许你使用类似 SQL 的语法来查询集合、数据库、XML 等数据源。LINQ 的主要优势在于它提供了一种统一的查询语法,使得代码更加简洁、易读。
在本教程中,我们将从基础开始,逐步介绍 LINQ 的核心概念,并通过实际案例展示如何使用 LINQ 来解决常见的编程问题。
LINQ 的基本概念
1. LINQ 查询语法
LINQ 提供了两种查询语法:查询表达式语法和方法语法。查询表达式语法类似于 SQL,而方法语法则使用扩展方法。
查询表达式语法
csharp
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from num in numbers
where num % 2 == 0
select num;
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
输出:
2
4
方法语法
csharp
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0);
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
输出:
2
4
备注
查询表达式语法和方法语法在功能上是等价的,选择哪种语法取决于个人偏好和代码的可读性。
2. LINQ 的延迟执行
LINQ 查询是延迟执行的,这意味着查询不会立即执行,而是在你实际访问查询结果时才会执行。这种特性可以提高性能,尤其是在处理大数据集时。
csharp
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(num => num % 2 == 0);
numbers.Add(6); // 添加一个新元素
foreach (var num in evenNumbers)
{
Console.WriteLine(num);
}
输出:
2
4
6
提示
延迟执行意味着你可以在查询定义之后修改数据源,查询结果会反映这些修改。
3. LINQ 的常用操作符
LINQ 提供了丰富的操作符来查询和操作数据。以下是一些常用的操作符:
- Where: 过滤数据
- Select: 投影数据
- OrderBy: 排序数据
- GroupBy: 分组数据
- Join: 连接数据
示例:使用 OrderBy
和 Select
csharp
var numbers = new List<int> { 5, 3, 1, 4, 2 };
var sortedNumbers = numbers.OrderBy(num => num).Select(num => num * 2);
foreach (var num in sortedNumbers)
{
Console.WriteLine(num);
}
输出:
2
4
6
8
10
实际案例:学生成绩查询
假设我们有一个学生列表,每个学生有姓名和成绩。我们想要查询成绩大于 80 分的学生,并按成绩降序排列。
csharp
var students = new List<Student>
{
new Student { Name = "Alice", Score = 85 },
new Student { Name = "Bob", Score = 75 },
new Student { Name = "Charlie", Score = 90 },
new Student { Name = "David", Score = 80 }
};
var highScorers = students.Where(s => s.Score > 80)
.OrderByDescending(s => s.Score);
foreach (var student in highScorers)
{
Console.WriteLine($"{student.Name}: {student.Score}");
}
输出:
Charlie: 90
Alice: 85
警告
在实际应用中,确保数据源的类型和查询条件匹配,以避免运行时错误。
总结
LINQ 是 C# 中一个强大的工具,它简化了数据查询和操作的过程。通过本教程,你已经学习了 LINQ 的基本概念、查询语法、延迟执行以及常用操作符。我们还通过一个实际案例展示了如何使用 LINQ 来解决实际问题。
附加资源与练习
- 练习: 尝试使用 LINQ 查询一个包含多个属性的对象列表,并练习使用
GroupBy
和Join
操作符。 - 资源: 查阅 Microsoft 官方文档 以获取更多关于 LINQ 的详细信息。
通过不断练习和探索,你将能够熟练使用 LINQ 来处理各种数据查询任务。祝你学习愉快!