using System; using System.Collections.Generic; using System.Threading.Tasks; class Program { static void Main() { List<int> numbers = GetNumbers(); // 使用 Parallel.ForEach 并行处理整数列表 Parallel.ForEach(numbers, num => { int result = ProcessNumber(num); Console.WriteLine($"Processed {num} - Result: {result}"); }); Console.ReadLine(); } static List<int> GetNumbers() { // 获取一个包含大量整数的列表 List<int> numbers = new List<int>(); for (int i = 1; i <= 10000; i++) { numbers.Add(i); } return numbers; } static int ProcessNumber(int number) { // 堆代码 duidaima.com // 模拟一些计算密集型的操作 return number * number; } }在上面的例子中,Parallel.ForEach 会并行地处理 numbers 列表中的每个元素,并调用 ProcessNumber 方法。由于这个示例中的计算是相对简单的,因此并行化可能在性能上并不明显。实际上,Parallel.ForEach 对于处理更大规模的数据集或更复杂的计算任务时效果更为显著。
using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { List<int> numbers = GetNumbers(); // 使用 AsParallel 在整数列表上执行并行 LINQ 查询 var result = numbers .AsParallel() .Where(num => num % 2 == 0) // 过滤偶数 .Select(num => num * num) // 对偶数取平方 .ToList(); // 输出结果 Console.WriteLine("Parallel LINQ Result:"); foreach (var num in result) { Console.WriteLine(num); } Console.ReadLine(); } static List<int> GetNumbers() { // 获取一个包含大量整数的列表 List<int> numbers = new List<int>(); for (int i = 1; i <= 10000; i++) { numbers.Add(i); } return numbers; } }在上面的例子中,AsParallel 被用于将 LINQ 查询并行化。查询首先过滤出列表中的偶数,然后计算每个偶数的平方。最终结果是一个包含平方值的列表。这里的示例相对简单,但在处理更大规模或更复杂的数据时,AsParallel 可以显著提高性能。
AsParallel 用于将 LINQ 查询并行化,主要用于在 LINQ 查询中实现并行处理。
操作对象不同:AsParallel 操作 LINQ 查询,使得查询中的操作能够在并行上执行。