使用不帶async關鍵字的lambda表達式的LINQ表達式可以指定索引。對於example:如何將索引添加到異步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); }
}));
我想獲得該指數,使得網頁內容可以被存儲在一個數組,而不是使用鎖語句或集合索引中進行搜索的原因。
當我嘗試向上述查詢添加一個索引時,它會給編譯器帶來錯誤。
有沒有辦法在上面的查詢中指定索引,或者可以使用另一個LINQ表達式(Select除外),它支持使用帶索引的異步lambda表達式?
您不應該在預測中執行副作用。在正常的代碼中這已經夠糟的了,但是當處理多線程代碼時,處理起來更加困難。執行投影的lambda應返回操作的結果,而不是將它們添加到列表中。然後您可以使用返回序列的結果。 – Servy