等待Linq查询语法[已关闭]

snz8szmq  于 2022-12-15  发布在  其他
关注(0)|答案(1)|浏览(145)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

4天前关闭。
Improve this question
我们在LINQ查询语法中有await等价物吗?如果没有,为什么会这样?
例如,当与数据库交谈时。或者如果有人能引导我走正确的方向。

zaq34kh6

zaq34kh61#

是的,但这取决于你做什么和反对什么。你需要阅读IEnumerableIQueryable
如果你查询的是内存中的列表,那么就没有异步操作。你只是在调用执行查询之前,将IEnumerable对象 Package 在源代码周围。所有的操作都是同步的。

List<string> Countries = new() { "France", "Spain", "UK", "New Zealand", "Australia", "Fiji", "Cook Islands" };

var cut = Countries.Skip(2).Take(2).ToList();

在这里,.Skip(2).Take(2)将查询构建为围绕Countries列表对象(它本身实现IEnumerable)的一组IEnumerable Package 器。ToList()执行 Package 器以具体化新的List<String>对象。
另一方面,如果查询EF这样的数据源,则源将是IQueryable

var list = await dbContext.Set<WeatherForecast>().Skip(2).Take(2).ToListAsync();

这里.Skip(2).Take(2),在执行时,构建一个SQL查询以针对数据库中的WeatherForecast实体执行。ToListAsync()在执行查询并等待SQL Server响应时通常会让步。您需要小心,因为某些实现(如SQLite的实现)可能有一个任务 Package 器,但它们是同步的,永远不会让步。

相关问题