提问者:小点点

如果我在IQueryable上使用await+ToListAsync(),而IQueryable没有定义为任务,这是否正确


我正在使用ASP.NET MVC-5和EF-6,我不确定使用await+是否有效。例如,我有以下存储库方法,它返回一个IQueryable:-

public IQueryable<TSet> getAllScanEmailTo()
{
    return t.TSets.Where(a=>a.Name.StartsWith("ScanEmail"));    
}

我把它叫做:-

var emailsTo = await repository.getAllScanEmailTo().ToListAsync();

在一开始,我认为我会得到一个错误,因为我正在使用“等待”的方法,这是一个没有定义为任务,但上面工作得很好,所以有人可以建议这一点,请?


共3个答案

匿名用户

一开始我认为我会得到一个错误,因为我使用“等待”一个方法,它没有被定义为一个任务,但是上面的工作很好

实际上,您正在等待一个返回的方法,其中。如果查看扩展方法,您将看到它返回一个/code>。您正在异步等待此方法查询数据库,创建列表并将其返回给调用方。当您对这样的方法时,该方法在操作完成之前不会返回。async-await使您的代码感觉是同步的,而执行实际上是异步的。

匿名用户

实际上,没有问题,因为您使用的是,而不是

编辑:要查看async-await模式是如何工作的,可以看到这个链接。这是一张有用的图片

匿名用户

你不是在“等待一种方法”。您正在等待一个,这是一个可等待的。

调用,它返回一个/code>,然后在此基础上调用,它返回您等待的/code>。