我在 c# 中有一些表格数据,有大约 100 K(100000) 条记录,我必须存储在内存中。除了表格格式之外,存储这些数据的最佳方法是什么,记住我已经过滤掉了基于某些条件的结果(比如 dt.select("field1=1 and...) ,像 SQL 表一样对结果集进行排序.
请建议任何其他方式来检索数据。字典是另一种方式,但基于字段条件,如果使用字典或任何其他集合,如何检索数据。
我在 c# 中有一些表格数据,有大约 100 K(100000) 条记录,我必须存储在内存中。除了表格格式之外,存储这些数据的最佳方法是什么,记住我已经过滤掉了基于某些条件的结果(比如 dt.select("field1=1 and...) ,像 SQL 表一样对结果集进行排序.
请建议任何其他方式来检索数据。字典是另一种方式,但基于字段条件,如果使用字典或任何其他集合,如何检索数据。
假设您追求速度并降低内存消耗,请尝试以下操作:
DataReader
)。逐条读取数据记录,并为每条记录创建一个实体。在读取字符串类型的每个字段的过程中,您可以稍微优化一下:
String.Intern
在其上使用并放入属性中。List<Entity>
来存储它。您可以在列表和实体上使用 LINQ 来查询您的集合。这在性能上相当慢,但却是内存的最佳解决方案。Tuple<string, string>
FirstName 和 LastName 的值。现在查询这些值非常快。对于排序,使用SortedDictionary
. 如果键有重复项,请创建一个像这样的字典:Dictionary<Tuple<string, string>, List<Entity>>
它将存储具有相同匹配的名字和姓氏的所有记录。我知道这个解决方案需要更多的编码,但速度非常快。当然,您可以保留DataTable
解决方案。如果内存是您唯一关心的问题,请尝试制作一个包含所有字符串的DataReader
-wrapper 。Intern
将您的包装器包裹在原件周围,DataReader
并使用它来创建/填充DataTable
.