【问题标题】:Best way to store table like data存储表格数据的最佳方式
【发布时间】:2014-07-28 21:53:44
【问题描述】:

存储类似数据的表格的最佳方式是:

         | 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>> 或将其包装到索引器中的类。
  • 尚不清楚您的集合的用例是什么,但这可能是您希望在通用集合上使用 double[,] 的少数情况之一

标签: c# variables


【解决方案1】:

您可以在完全不使用数据库的情况下使用 .NET DataTable 类...您可以非常轻松地自己构建一个,而无需任何数据源。

这样,您仍然可以获得所有好处(您可以使用 LINQ 查询它,将它绑定到东西,仍然让它是动态的),但您不需要它由数据库支持。

这是关于如何实现这一目标的 SO 答案。 https://stackoverflow.com/a/1042638/643951

【讨论】:

    【解决方案2】:

    另一种选择是使用 XML 结构

    【讨论】:

    • 我认为这有点矫枉过正,动态增长数据结构应该就可以了。
    【解决方案3】:

    我认为你应该声明这个变量:

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

    稍后您可以使用matrix.Capacity 来决定行数,并在每行上使用相同的属性来设置列数。这样你就不会浪费内存了。

    如果您的下一个数据更短,您可以使用matrix.TrimExcess() 调整矩阵大小。

    使用matrix.Capacitymatrix.TrimExcess() 背后的想法是控制数据结构中保留了多少空间。这样它就不会自行增长,您将获得性能。

    【讨论】:

    • 您可以使用 DataTable 或使用 Xml 将它们保存在文件中
    • @moez 我认为在这种情况下不需要DataTable,并且保存到文件不是问题的要求。我认为我的回答没有问题。
    • 我只是担心这会让事情变慢
    • @SunnySunday 那么你不应该使用DataTableXML 方法。那些比这慢得多。如果你想要比这更快的东西,你唯一的选择是double[,] matrix
    • 你的意思是二维数组吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2018-12-01
    • 2013-09-10
    • 2012-05-10
    • 2011-11-26
    • 2018-12-11
    • 1970-01-01
    相关资源
    最近更新 更多