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