最佳存储表格数据的方法

3
什么是存储类似表格的数据的最佳方式?
         | Column 0 | Column 1 | Column 2 | Column 3 | Column 4
Row 0    | 0.984546 | 0.654564 | 0.467676 | 0.673466 | 50.03333
Row 1    | 0.684546 | 0.457564 | 0.467776 | 0.674566 | 45.73335
Row 2    | 0.884546 | 0.424564 | 0.445676 | 0.664566 | 12.23333
Row 3    | 0.284546 | 0.054564 | 0.237676 | 0.124566 | 45.01333

最大的列和行都是动态的,值的坐标非常重要,因为我需要根据这些值进行计算。它不是数据库,因为每次数据都不同,我不希望它永远存在。此外,我需要能够轻松访问它。我尝试使用LinkedListDouble[],但对我来说定位每个值太困难了。速度也是一个因素。

有什么建议可以使用哪种类型的集合或处理方式?


你可以使用一个 Dictionary<int,Dictionary<int,double>> 或者将其封装到一个索引器中的类。 - Florian F.
1
不清楚你的集合使用情况,但这可能是少数几种情况之一,你需要使用 double[,] 而不是通用集合。 - Conrad Frix
3个回答

3
我认为您应该声明此变量:

List< List<double> > matrix = new List< List<double> >();

稍后您可以使用matrix.Capacity来确定行数,并在每行上使用相同的属性来设置列数。这样,就不会浪费内存。
如果下一个数据将更短,可以使用matrix.TrimExcess()调整矩阵大小。
使用matrix.Capacitymatrix.TrimExcess()的想法是控制数据结构中保留多少空间。这样它就不会自动增长,并且您将获得更好的性能。

你可以使用 DataTable 或将它们保存为 Xml 文件。 - Moez Rebai
@moez 我认为在这种情况下不需要使用 DataTable,并且将数据保存到文件也不是问题的要求。我认为我的回答没有问题。 - rareyesdev
我只是担心这会使事情变慢。 - Horrible Programmer
1
@SunnySunday 那么你不应该采用 DataTableXML 方法。它们比这个方法慢得多。如果你想要比这个更快的东西,你唯一的选择就是 double[,] matrix - rareyesdev
你是指二维数组吗? - Horrible Programmer

2
您可以在不使用数据库的情况下使用.NET DataTable类... 您可以非常容易地自己构建一个而无需任何数据源。
这样,您仍然可以获得所有好处(可以使用LINQ查询它,将其绑定到其他内容,仍然使其具有动态性),但您不需要它由数据库支持。
以下是如何实现此目标的SO答案。 https://dev59.com/2HNA5IYBdhLWcg3wPLL-#1042638

0

另一个选项是使用XML结构


1
我认为这有些过度了,动态增长的数据结构应该可以胜任。 - rareyesdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接