使用 LINQ 通过异步方法填充字典

mic*_*czy 6 c# linq dictionary async-await

我正在尝试填写Dictionary<long, Data>。返回数据的方法GetData是异步的,所以我使用以下代码来获取字典:

var myDictionary = entities
  .GroupBy(e => e.EntityId)
  .Select(e => e.First())
  .ToDictionary(e => e.EntityId, async entity => await GetData(entity));
Run Code Online (Sandbox Code Playgroud)

不幸的是 myDictionary 是类型Dictionary<long, Task<Data>>

如何在ToDictionary中填写using async lambda?

Mag*_*nus 4

尝试这个:

var myDictionary = 
                (await Task.WhenAll(entities
                .GroupBy(e => e.EntityId)
                .Select(e => e.First())
                .Select(async e => new {e.EntityId, Data = await GetData(e)})))
                  .ToDictionary(e => e.EntityId, e => e.Data);
Run Code Online (Sandbox Code Playgroud)