c# - 将 foreach 与 LINQ to Entities 一起使用时是否需要 ToList

标签 c# linq entity-framework linq-to-entities

我有一个关于 LINQ 如何使用 foreach 对 Entity Framework 中的可查询实体执行的性能问题。

这样做更好(更快)吗

foreach(var thing in myentities.GetThemAll())

foreach(var thing in myentities.GetThemAll().ToList())

第一个示例是否会实际导致 myentities.GetThemAll().Count()(+1?)访问数据库,每次收集一行?

最佳答案

如果您只需要遍历元素而不调用 ToList() 会更好。这是因为当我们调用它时,会立即触发相应的查询并创建一个内存集合。

如果您不调用 ToList,您将避免创建用于保存查询结果的内存集合。

无论您采用第一种方式还是第二种方式,您都将往返数据库一次。

关于c# - 将 foreach 与 LINQ to Entities 一起使用时是否需要 ToList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26914674/

相关文章:

C# 异步套接字服务器接收问题

c# - 如何跳转到 PrintDocument 中的下一页?

c# - 使用 WebBrowser 访问 DOM

c# - 如何仅选择一列以返回linq中的对象

sql-server - 如何在Azure Sql数据库中生成无间隙的严格递增数字

c# - 当 Windows 服务以 Release模式托管时,Hangfire 服务器无法选择作业

c# - 如何按多个值对 XML 数据进行分组

c# - 使用linq查找匹配多个行值的外键

c# - 在哪里可以找到翻译的 Linq to Entity 查询到 Sql

c# - 禁用延迟加载仍然加载相关实体。为什么?