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