使用LINQ用异步方法填充Dictionary

时间:2018-04-13 14:05:58

标签: 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));

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

如何在ToDictionary中填写使用异步lambda?

1 个答案:

答案 0 :(得分:0)

试试这个:

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);