C# Linq基本功 —— 必学的必熟的10个方法
@[toc]
1. Linq简介
1.1 什么是Linq
Linq(Language Integrated Query)是C#语言中的一种查询语言,它提供了一种统一的方式来查询和操作各种数据源,如集合、数据库、XML等。Linq的出现使得开发者能够以一种更简洁、更直观的方式来处理数据,提高了代码的可读性和可维护性。
1.2 Linq的优势
Linq具有以下几个优势:
- 简洁:语法类似于SQL的查询语句,使代码简洁易懂。
- 强类型:编译时编译器会进行类型检查,降低运行时错误。
- 可组合:查询操作之间是可以进行组合的(比如在一个查询中嵌套另一个查询),非常灵活。
- 可扩展:Linq提供了一套标准的查询操作符,同时也支持自定义扩展方法,可以根据需要进行扩展。
2. Linq基本方法
2.1 Where方法
Where方法用于根据指定的条件筛选出符合条件的元素。例如,我们可以使用Where方法从一个整数集合中筛选出所有大于10的元素。
var numbers = new List<int> { 5, 10, 15, 20, 25 };
var result = numbers.Where(n => n > 10);
执行结果:
15, 20, 25
2.2 Select方法
Select方法用于对集合中的每个元素进行转换。例如,我们可以使用Select方法将一个整数集合中的每个元素乘以2。
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var result = numbers.Select(n => n * 2);
执行结果:
2, 4, 6, 8, 10
2.3 OrderBy方法
OrderBy方法用于对集合中的元素进行排序。例如,我们可以使用OrderBy方法对一个字符串集合按照字母顺序进行排序。
var names = new List<string> { "Tom", "Jerry", "Alice", "Bob" };
var result = names.OrderBy(n => n);
执行结果:
Alice, Bob, Jerry, Tom
2.4 GroupBy方法
GroupBy方法用于根据指定的键对集合中的元素进行分组。例如,我们可以使用GroupBy方法将一个学生集合按照班级进行分组。
var students = new List<Student>
{
new Student { Name = "Tom", Class = "A" },
new Student { Name = "Jerry", Class = "B" },
new Student { Name = "Alice", Class = "A" },
new Student { Name = "Bob", Class = "B" }
};
var result = students.GroupBy(s => s.Class);
执行结果:
A: Tom, Alice
B: Jerry, Bob
2.5 Join方法
Join方法用于将两个集合中的元素进行关联。例如,我们可以使用Join方法将一个学生集合和一个班级集合关联起来。
var students = new List<Student>
{
new Student { Name = "Tom", ClassId = 1 },
new Student { Name = "Jerry", ClassId = 2 },
new Student { Name = "Alice", ClassId = 1 },
new Student { Name = "Bob", ClassId = 2 }
};
var classes = new List<Class>
{
new Class { Id = 1, Name = "A" },
new Class { Id = 2, Name = "B" }
};
var result = students.Join(classes, s => s.ClassId, c => c.Id, (s, c) => new { s.Name, c.Name });
执行结果:
{ Name = "Tom", Name = "A" },
{ Name = "Jerry", Name = "B" },
{ Name = "Alice", Name = "A" },
{ Name = "Bob", Name = "B" }
2.6 Any方法
Any方法用于判断集合中是否存在满足指定条件的元素。例如,我们可以使用Any方法判断一个整数集合中是否存在大于10的元素。
var numbers = new List<int> { 5, 10, 15, 20, 25 };
var result = numbers.Any(n => n > 10);
执行结果:
True
2.7 All方法
All方法用于判断集合中的所有元素是否都满足指定条件。例如,我们可以使用All方法判断一个整数集合中的所有元素是否都大于10。
var numbers = new List<int> { 15, 20, 25 };
var result = numbers.All(n => n > 10);
执行结果:
True
2.8 First方法
First方法用于返回集合中满足指定条件的第一个元素。例如,我们可以使用First方法返回一个整数集合中大于10的第一个元素。
var numbers = new List<int> { 5, 10, 15, 20, 25 };
var result = numbers.First(n => n > 10);
执行结果:
15
2.9 Skip方法
Skip方法用于跳过集合中指定数量的元素。例如,我们可以使用Skip方法跳过一个整数集合中的前两个元素。
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var result = numbers.Skip(2);
执行结果:
3, 4, 5
2.10 Take方法
Take方法用于从集合中取出指定数量的元素。例如,我们可以使用Take方法从一个整数集合中取出前三个元素。
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var result = numbers.Take(3);
执行结果:
1, 2, 3
结语
本文介绍了C# Linq中一些作为基本的扩展方法的使用。掌握这些方法可以帮助开发者更加高效地处理数据。不夸张的说作为一个.NET工程师,不熟练掌握Linq的使用便是不合格。
参考文献:
- C# Linq基础教程 https: //www.runoob.com/w3cnote/csharp-linq-tutorial.html)
- C# Linq官方文档 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/