LINQ选择到词典

Jes*_*sse 27 c# linq

我正在尝试将a Select和项目中的每个元素投射到一个Dictionary<string, UdpReceiveResult> 我当前有一个Select只是将a的值投影到类型Dictionary列表.是一本类型的字典.我有tasksUdpReceiveResultclientsDictionary<string, UdpClient>

var tasks = clients.Select(c => c.Value.ReceiveAsync()).OrderByCompletion();
Run Code Online (Sandbox Code Playgroud)

我想将密钥和ReceiveAsync()结果投影到一个新的Dictionary.该OrderByCompletion是Nito.AsyncEx DLL.

Ser*_*rvy 46

那么,对于初学者,你需要你的结果也包括关键:

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

然后当任务完成时,您可以将它们放入字典中:

var results = await Task.WhenAll(tasks);
var dictionary = results.ToDictionary(
    pair => pair.Key, pair => pair.Value); 
Run Code Online (Sandbox Code Playgroud)


e.g*_*gad 27

此代码将在一行代码中完成相同的操作.

var tasks = clients.ToDictionary(c => c.Key, c => c.Value.ReceiveAsync());
Run Code Online (Sandbox Code Playgroud)