2014-09-22 77 views
1

我使用C#DataTable来存储大约100百万条记录。但是存储1600万后,它抛出一个异常“了内存在内存中存储100多万条记录C#

所以我们可以存储在C#中的数据表100个milions记录还是我们有另一个选择。

存储数据后,我想对该数据执行一些LINQ查询。

请提供给我的解决方案

+1

http://stackoverflow.com/questions/4040523/total-rows-that-we-can-add-to-datatable – 2014-09-22 06:07:50

+1

在内存中有1亿条记录有什么意义?对我来说这没有多大意义。你从哪里得到数据?为什么不能从数据源本身(数据库,文件或其他)执行Linq查询(筛选)? – 2014-09-22 06:14:39

+1

出于兴趣,每个记录有多大,以及您有多少内存?即使没有DataTable限制,如果你有1亿条记录,并且每个记录只有一个20个字符的字符串,并且有'DataRow'对象的开销等,我仍然期望每行至少* 100字节,并且因此10GB。为什么你需要将整个数据库放在内存中? – 2014-09-22 06:14:43

回答

1

一个DataTable中能存储的是16777216行的最大数量。

上找到http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx

替代的,使用的数据集。在每个1600万条记录之后创建一个数据库并将其添加到数据集中。

+0

是的,我知道......但是我们有没有其他选择? – cpVariyani 2014-09-22 06:08:54

+0

使用数据集并在每个1600万条记录后创建一个新的数据表 – 2014-09-22 06:11:58

+0

这不会完成我的需要......因为我需要一个列表或一个集合中的所有记录。 – cpVariyani 2014-09-22 06:15:16