我有两个可以与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的参数,我想。
我该怎么做?
答案 0 :(得分:4)
使用the select overload that takes an item and the item's index,如下所示:
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
});