【发布时间】:2023-02-03 14:12:27
【问题描述】:
我试图确定是否存在与下面的 foreach 语句等效的 linq 表达式?
我尝试过的几种解决方案中有两种在循环下方对其结果进行了评论。我认为第一个示例或变体会起作用,但类型始终是 IEnumerable<Task> 除非我同步调用它,这让人感到担忧。
public async Task<IEnumerable<CompanySettings>> GetClientSettingsAsync()
{
foreach(var company in await GetParticipatingCompaniesAsync())
{
settings.Add(new CompanySettings(company, await GetSyncDataAsync(company)));
}
// a's Type is IEnumerable<Task<CompanySetting>> and not IEnumerable<CompanySetting>
// var a = (await GetParticipatingCompaniesAsync()).Select(async x => new CompanySettings(x, await GetSyncDataAsync(x)));
// return a;
// b's Type is correct it's also synchronous. Does that matter?
// var b = (GetParticipatingCompaniesAsync()).Result.Select(x => new CompanySettings(x, GetSyncDataAsync(x).Result));
//return b;
return settings;
}
【问题讨论】:
标签: c# linq async-await