0

我有两个想与 PLINQ 一起使用的枚举,如何正确组合它们?他们来了:

List<Message> messageList=...;

IEnumerable<int> lineNums=Enumerable.Range(1,messages.Count);
IEnumerable<Message> messages=messageList;

简而言之,我想并行应用一些复杂的耗时格式并将行号映射到消息。这就是我的意思(没有行号),因为我不知道如何将它们整合到这个表达式中:

var formattedLine=messageList.AsParallel().AsOrdered().Select(message =>
  {
    ... // Some work here to be done in parallel
    return string.Format(...); // Some formatting here of message
  }

然后,我将通过简单的 foreach 使用格式化的结果:

foreach (var line in formattedLine)
  ...

好吧,以上内容对消息有好处,但我想在其中包含一些格式化的 lineNums 从可枚举中与消息一一对应。我不能只在 lambda 中互锁递增一个整数,因为我不会得到有序的结果。所以,我想基本上我需要两个可枚举的一对一映射作为我的参数到 lambda。

我该怎么做呢?

4

1 回答 1

4

使用带有项目和项目索引的选择重载,如下所示:

var formattedLine=messageList.AsParallel().AsOrdered().Select((message, index) =>
{
    ... // Some work here to be done in parallel
    return string.Format(...); // Some formatting here of message using index
});
于 2012-07-19T19:53:25.000 回答