使用linq迭代大型数据库表

时间:2015-08-13 14:21:38

标签: c# sql-server linq

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

通常这个答案是完美的:linq to sql - loop through table data and set value。但正如它在锡上所说,使用以下线对于大型桌子并不是特别理想。

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

由于在List<>中缓存整个表格不起作用,我还有其他选择吗?例如,是否有一种优雅的方式来“翻阅”记录?由于我很确定这是一个相对常见的问题,我认为这也是最好的做法。然而,我无法找到它。

2 个答案:

答案 0 :(得分:3)

你谈论数百万行数据,然后Linq不是你的朋友。

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

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

答案 1 :(得分:1)

您可以使用.Skip().Take()方法处理预定义的批次。另一件需要考虑的事情是使用触发器,这样你根本不需要担心第二个表。