如何在Task <list <...>&gt;上获得First()?

时间:2018-04-17 13:21:22

标签: c#

如果我有

Task<List<SomeTable>> models = _dbContext.SomeTable.ToListAsync();

我现在如何使用First()?

models.First() // Task<List<..>> does not contain a definition for First

1 个答案:

答案 0 :(得分:4)

您需要await异步方法ToListAsync()的结果才能获得List<T>,因为异步方法始终返回TaskTask<TResult>

List<SomeTable> models = await _dbContext.SomeTable.ToListAsync();

并且您调用它的方法也需要async

或者阻止异步调用but that's not recommended approach

List<SomeTable> models = _dbContext.SomeTable.ToListAsync().Result;

现在,如果集合中没有返回任何项目,那么您可以使用FirstOrDefault()获取第一个项目,因为First()会在运行时失败:

var model = models.FirstOrDefault();

现在,一旦Db调用完成并将结果具体化到内存集合中,就会在models中获得存储。