0

PLINQ で使用したい列挙型が 2 つありますが、それらを正しく組み合わせるにはどうすればよいですか? どうぞ:

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)
  ...

上記はメッセージには適していますが、メッセージとの 1 対 1 の対応で、enumerable から書式設定された lineNums をいくつか含めたいと思います。順序付けられた結果が得られないため、ラムダで整数を連動してインクリメントすることはできません。したがって、基本的には、ラムダへのパラメーターとして 2 つの列挙型を 1 対 1 でマッピングする必要があると思います。

どうすればいいですか?

4

1 に答える 1

4

次のように、アイテムとアイテムの index を受け取る select オーバーロードを使用します。

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 に答える