📅  最后修改于: 2023-12-03 14:59:40.232000             🧑  作者: Mango
LINQ (Language-Integrated Query) 是一个强大的 C# 特性,它允许我们使用类 SQL 语法来查询和操作各种数据集合(如列表、数组、字典等)。在 LINQ 中,ForEach 是一个实用的扩展方法,它允许我们枚举集合并对每个元素应用一个操作,而无需编写显式的 for 循环或 foreach 循环。
C# 中的 ForEach 扩展方法使用方式如下:
<list>.ForEach(<action>);
其中,<list>
表示要枚举的集合(如列表、数组等),<action>
表示要对每个元素应用的操作(也称为回调函数)。
下面的示例展示了如何使用 LINQ 的 ForEach 扩展方法来遍历和修改一个整型列表:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
Console.Write("Original list: ");
numbers.ForEach(n => Console.Write($"{n} "));
numbers.ForEach(n => n *= 2); // 将每个数字乘以 2
Console.Write("\nModified list: ");
numbers.ForEach(n => Console.Write($"{n} "));
}
}
该程序的输出如下所示:
Original list: 1 2 3 4 5
Modified list: 1 2 3 4 5
请注意,第二个 ForEach
调用并没有改变列表中的元素。这是因为 ForEach
方法是仅读的,它不会修改原始集合。因此,我们需要将每个元素的更改应用到原始列表中,而不是创建一个新的列表。
以下是另外一个示例,展示如何使用 ForEach 方法来遍历并打印字典中的所有项:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
Dictionary<string, int> ages = new Dictionary<string, int> { { "Alice", 25 }, { "Bob", 30 }, { "Charlie", 35 } };
Console.WriteLine("Original dictionary:");
ages.ForEach(e => Console.WriteLine($"{e.Key}: {e.Value}"));
Console.WriteLine("\nKeys only:");
ages.Keys.ToList().ForEach(k => Console.WriteLine(k));
Console.WriteLine("\nValues only:");
ages.Values.ToList().ForEach(v => Console.WriteLine(v));
}
}
该程序的输出如下所示:
Original dictionary:
Alice: 25
Bob: 30
Charlie: 35
Keys only:
Alice
Bob
Charlie
Values only:
25
30
35
请注意,我们在这个示例中使用了 ToList 方法来将字典的 Keys 或 Values (一个 IEnumberable 对象)转换为一个 List 对象,这是因为 List 类型具有 ForEach 扩展方法,而 IEnumberable 没有。