c#并行foreach循环查找索引

Posted

技术标签:

【中文标题】c#并行foreach循环查找索引【英文标题】:c# parallel foreach loop finding index 【发布时间】:2017-02-04 09:53:44 【问题描述】:

我正在尝试读取文本文件中的所有行并计划显示每行信息。如何找到循环内每个项目的索引?

string[] lines = File.ReadAllLines("MyFile.txt");
    List<string> list_lines = new List<string>(lines);
    Parallel.ForEach(list_lines, (line, index) =>
      
         Console.WriteLine(index);
    //   Console.WriteLine(list_lines[index]);
         Console.WriteLine(list_lines[0]);
       );
       Console.ReadLine();

【问题讨论】:

你的index有什么问题? 这里的索引在调试时显示真假。 啊,因为正如柯蒂斯所说,index 是回调的第三个参数,而不是第二个。 【参考方案1】:

another overload 对应于 Parallel.ForEach,它为您提供索引。

Parallel.ForEach(list_lines, (line, state, index) =>
    
        Console.WriteLine(index);
        Console.WriteLine(list_lines[(int)index]); // The type of the `index` is Long.
    );     

【讨论】:

用回调参数(line)代替list_lines[index]不是更好吗? 当然,这只是一个示例,表明该行在语法和语义上是有效的(index 是正确的类型并且在语义上表示当前行的索引)。 可能是我要找的,我试过后会回复你的。

以上是关于c#并行foreach循环查找索引的主要内容,如果未能解决你的问题,请参考以下文章

C#中foreach语句的作用?

如何在 C# foreach 中获取索引

从foreach循环中获取当前索引[重复]

带有异步 lambda 的并行 foreach

C#中list<>定义的变量,我用foreach()循环查找 与 list<> .find 查找两个哪个效率高?后者是不是用了算法

在并行 foreach 循环中使用 source()