9 LINQ与集合的内容

在上一篇文章中,我们探讨了LINQ和Lambda表达式的LINQ方法语法,了解了如何使用方法链式调用来操作集合。本文将进一步深入探讨LINQ与集合的结合,主要使用LINQ的查询语法和Lambda表达式来进行集合操作。我们将用实际的案例来说明如何高效地处理数据。

什么是LINQ?

LINQ(Language Integrated Query)是一种用于查询集合、数据库或XML等数据源的强大工具。在C#中,LINQ提供了丰富的查询操作符,使得对数据的查询变得简洁而直观。

LINQ与集合

在C#中,常用的集合类型包括List<T>Dictionary<K,V>Array等。LINQ允许我们对这些集合进行复杂的查询和操作。我们将通过以下几个方面来说明LINQ与集合的结合:

  1. 查询集合
  2. 过滤数据
  3. 排序数据
  4. 聚合数据

1. 查询集合

我们可以使用LINQ的查询语法或者方法语法来查询集合。以下是一个使用LINQ查询语法的示例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
public static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

// 使用LINQ查询语法查询偶数
var evenNumbers = from n in numbers
where n % 2 == 0
select n;

Console.WriteLine("偶数: " + string.Join(", ", evenNumbers));
}
}

在这个例子中,我们定义了一个整型集合numbers,然后使用LINQ的查询语法从中筛选出所有偶数。查询语法的结构清晰明了,便于理解。

2. 过滤数据

我们可以使用Where方法(或查询语法的where关键字)来过滤集合中的数据。下面的示例展示了如何使用Lambda表达式进行过滤。

1
2
3
4
5
6
7
8
9
public static void Main()
{
List<string> names = new List<string> { "Alice", "Bob", "Charlie", "David", "Eve" };

// 使用LINQ方法语法过滤名字长度大于3的名字
var filteredNames = names.Where(name => name.Length > 3);

Console.WriteLine("长度大于3的名字: " + string.Join(", ", filteredNames));
}

在这个例子中,Where方法接受一个Lambda表达式作为参数,通过这个表达式,我们可以过滤出长度大于3的名字。Lambda表达式中name => name.Length > 3是关键,它定义了过滤的条件。

3. 排序数据

LINQ也提供了非常便利的排序功能,通常使用OrderByOrderByDescending方法来实现。以下是一个关于排序的示例:

1
2
3
4
5
6
7
8
9
public static void Main()
{
List<int> scores = new List<int> { 97, 92, 81, 60, 100, 87 };

// 使用LINQ方法语法对分数进行升序排序
var sortedScores = scores.OrderBy(score => score);

Console.WriteLine("升序排列的分数: " + string.Join(", ", sortedScores));
}

在这个示例中,我们使用OrderBy方法根据分数进行升序排序。Lambda表达式score => score指明了排序依据。

4. 聚合数据

LINQ还允许我们对集合进行聚合操作,比如计数、求和、平均值、最小值和最大值等。下面是一个计算分数总和的示例:

1
2
3
4
5
6
7
8
9
public static void Main()
{
List<int> scores = new List<int> { 10, 20, 15, 30 };

// 使用LINQ方法语法计算分数的总和
int totalScore = scores.Sum();

Console.WriteLine("分数总和: " + totalScore);
}

此处,Sum方法用来计算集合scores中的所有分数总和。

结论

通过上述几个示例,我们可以看到使用LINQ和Lambda表达式在操控集合时的优势。无论是查询、过滤、排序还是聚合,LINQ都能使代码变得简洁、易读。在处理数据时,应用LINQ可以显著提升开发效率及代码质量。

接下来的文章我们将转向委托和事件,探讨如何定义和使用委托,以及它们在C#中的重要性。希望本篇文章能够帮助你更深入地理解LINQ与集合的强大能力!

9 LINQ与集合的内容

https://zglg.work/csharp-one/9/

作者

AI免费学习网(郭震)

发布于

2024-08-13

更新于

2024-08-13

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论