LINQ 辞書に選択 質問する

LINQ 辞書に選択 質問する

私は を取りSelect、各要素を に投影しようとしています。現在、の値を型のリストに投影するDictionary<string, UdpReceiveResult>があります。は 型の辞書です。私はSelectDictionarytasksUdpReceiveResultclientsDictionary<string, UdpClient>

var tasks = clients.Select(c => c.Value.ReceiveAsync()).OrderByCompletion();

キーとReceiveAsync()結果を新しい に投影したいと思いますDictionary。 はOrderByCompletionNito.AsyncEx dll からのものです。

ベストアンサー1

まず、結果にキーも含める必要があります。

var tasks = clients.Select(async c => new
{
    c.Key,
    Value = await c.Value.ReceiveAsync(),
});

タスクが完了したら、それを辞書に追加できます。

var results = await Task.WhenAll(tasks);
var dictionary = results.ToDictionary(
    pair => pair.Key, pair => pair.Value); 

おすすめ記事