C# 在foreach循环中迭代IQueryable

C# 在foreach循环中迭代IQueryable,c#,entity-framework,C#,Entity Framework,有这样的代码 foreach (Order order in dbContext.Orders) { // some operations } 每次迭代后是否从db获取订单? 是否需要在dbContext.Orders上调用ToList()?它不会在foreach循环的每次迭代中加载一个订单。代码在枚举时将整个查询结果加载到内存中 无需List()您的IQueryable键入,以防对它们使用foreach。当调用ToList()或使用foreach循环时,查询将被具体化 有关的更多信息

有这样的代码

foreach (Order order in dbContext.Orders)
{
    // some operations
}
每次迭代后是否从db获取订单?
是否需要在
dbContext.Orders
上调用
ToList()

它不会在foreach循环的每次迭代中加载一个订单。代码在枚举时将整个查询结果加载到内存中

无需
List()
您的
IQueryable
键入,以防对它们使用
foreach
。当调用
ToList()
或使用
foreach
循环时,查询将被具体化


有关

的更多信息,请参阅
ToList
的实现可能正是这样做的,将项目添加到循环体的列表中。如果您对它提交给数据库的内容感兴趣,则应运行SQL跟踪。但是@spender是正确的。