C# 使用linq迭代大型数据库表

C# 使用linq迭代大型数据库表,c#,sql-server,linq,C#,Sql Server,Linq,我有两张桌子:Foo和Bar。对于Foo中的每一行,我现在想在Bar中添加一行,该行引用相应的Foo记录。Foo可能包含数百万条记录 通常情况下,这个答案是完美的:。但正如它在tin上所说的,使用下面的行对于大型表来说并不特别理想 List<User> users = dc.Users.ToList(); 由于在列表中缓存整个表是行不通的,我还有什么其他选择?例如,有没有一种优雅的方式来翻阅记录?因为我很确定这是一个相对普遍的问题,我认为这可能也有一个最佳实践。但是,我找不到它。您

我有两张桌子:Foo和Bar。对于Foo中的每一行,我现在想在Bar中添加一行,该行引用相应的Foo记录。Foo可能包含数百万条记录

通常情况下,这个答案是完美的:。但正如它在tin上所说的,使用下面的行对于大型表来说并不特别理想

List<User> users = dc.Users.ToList();

由于在列表中缓存整个表是行不通的,我还有什么其他选择?例如,有没有一种优雅的方式来翻阅记录?因为我很确定这是一个相对普遍的问题,我认为这可能也有一个最佳实践。但是,我找不到它。

您可以使用.Skip和.Take方法处理预定义的批处理。另一个需要考虑的问题是使用触发器,这样就不用担心第二个表了。

可以使用。另一个需要考虑的问题是使用触发器,这样你就不用担心第二张表了。

< p>你谈论了几百万行数据,那么LINQ不是你的朋友。 考虑使用存储过程,或者如果愿意,可以使用DbContext.ExecuteCommand


两者都将带来巨大的性能提升。

如果你谈论数百万行数据,那么Linq不是你的朋友

考虑使用存储过程,或者如果愿意,可以使用DbContext.ExecuteCommand


两者都将带来巨大的性能提升。

这就是答案。。。您希望该操作在数据库中发生。这是答案。。。您希望该操作在数据库中进行。不清楚您希望如何处理表中的数据?是否有任何理由需要在代码中执行此操作?在数据库中,使用简单的SQL查询或存储过程,这样的批处理通常更容易、更快。为什么不能使用foreach而不是ToList?如果您需要读取数百万行,如果可能的话,禁用ObjectTrackingEnabledIt通常会更好,因为您不清楚要在表中对这些数据执行什么操作?是否有任何理由需要在代码中执行此操作?在数据库中,使用简单的SQL查询或存储过程,这样的批处理通常更容易、更快。为什么不能使用foreach而不是ToList?如果需要读取数百万行,通常最好禁用ObjectTrackingEnabled