C# 如何从列表中获取模型列表<;任务<;模型>>;?
我有这个方法:C# 如何从列表中获取模型列表<;任务<;模型>>;?,c#,linq,async-await,C#,Linq,Async Await,我有这个方法: public async void OnNavigatedTo(NavigationParameters parameters) { var result = await GetMatches(); var toList = result.OrderByDescending(p => p.CreatedAt) .Select(async p => new CardDataModel() { Hea
public async void OnNavigatedTo(NavigationParameters parameters)
{
var result = await GetMatches();
var toList = result.OrderByDescending(p => p.CreatedAt)
.Select(async p => new CardDataModel()
{
HeadTitle = await generateHeadTitle(p) ,
HeadLines = p.Sport + " - " + p.PlayersNeeded + " players needed @" + p.Location,
HeadLinesDesc = p.Comment,
ProfileImage = "Person_7.jpg"
}).ToList();
CardList = toList;
}
它应该会生成一个列表,但因为我使用的是async/await,所以我得到的是一个列表
,我无法绑定到我的列表属性
你知道如何获得所需列表吗?你可以使用它返回一个IEnumerable
任务,这样你就可以等待它,然后使用ToList
获得一个列表,如下所示:
CardDataModel[] modelArray = await Task.WhenAll(toList);
CardList = modelArray.ToList();
下面是一个有用的扩展方法,可以添加到已经提供的答案中
public static class Ex {
public static Task<T[]> WhenAll<T>(this IEnumerable<Task<T>> tasks) {
return Task.WhenAll(tasks);
}
}
var result = await GetMatches();
var toList = await result.OrderByDescending(p => p.CreatedAt)
.Select(async p => new CardDataModel() {
HeadTitle = await generateHeadTitle(p),
HeadLines = p.Sport + " - " + p.PlayersNeeded + " players needed @" + p.Location,
HeadLinesDesc = p.Comment,
ProfileImage = "Person_7.jpg"
})
.WhenAll();
CardList = toList.ToList();