📜  c# linq foreach 示例 - C# (1)

📅  最后修改于: 2023-12-03 14:59:40.232000             🧑  作者: Mango

C# LINQ ForEach 示例

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 没有。