使用 Task.WhenAll 和 Linq Select 新对象

using Task.WhenAll and Linq Select new object

我想知道在 linq 中构造匿名对象时有一种方法可以使用 Task.WhenAll。我正在使用 .net 6。

香草盒看起来像这样,而且有效

var taskList = dataSource.Select(d => _client.GetAsync(d.Id));
var taskListResult = await Task.WhenAll(taskList);

不过,我正在尝试在 select 中构造一个对象,并用其他属性对其进行装饰。

var taskList = dataSource
        .Select(d => new 
        {
            ClientResult = _client.GetAsync(d.Id),
            Id = d.Id,
            OtherProperty = d.Other
        });

var taskListResult = await Task.WhenAll(taskList);

有什么方法可以实现吗?

谢谢

在语句 lambda 中使用 async-await,这将使它成为 async one:

var taskList = dataSource
        .Select(async d => new 
        {
            ClientResult = await _client.GetAsync(d.Id),
            Id = d.Id,
            OtherProperty = d.Other
        });

var taskListResult = await Task.WhenAll(taskList);