asyncキーワードなしでラムダ式を使用するLINQ式では、インデックスを指定できます。 exampleの場合:async LINQクエリにインデックスを追加する方法
var list = FileList.Select((file, index) => new { Index=index, Filename=file });
asyncキーワードを使用してインデックスを取得しようとしています。例えば:私はインデックスを取得したいと思います
await Task.WhenAll(urlList.Select(async url =>
{
byte[] urlContents = await GetWebPageAsync(url);
lock (Locker) { webResults.Add(URLContents); }
}));
理由は、Webページの内容ではなく、ロックステートメントを使用してまたはインデックスのために、コレクション内での検索の配列に格納できるようにということです。
上記のクエリにインデックスを追加しようとすると、コンパイラエラーが発生します。
上記のクエリでインデックスを指定する方法はありますか、インデックスを持つ非同期ラムダ式の使用をサポートする別のLINQ式(Select以外)を使用できますか?
あなたの予想に副作用を起こすべきではありません。通常のコードでは十分に悪いですが、マルチスレッドコードを処理する場合は、扱うのがさらに難しくなります。投影を実行するラムダは、操作の結果を返し、リストに追加しません。その後、返されたシーケンスの結果を使用することができます。 – Servy