如何在c#中使用1D字符串类型数组代替双类型二维锯齿状数组?

时间:2016-03-24 08:58:04

标签: c#

我有这种形式的数据:

double[][] rawData = new double[3][];
rawData[0] = new double[] { 65.0, 220.0 };
rawData[1] = new double[] { 73.0, 160.0 };
rawData[2] = new double[] { 59.0, 110.0 };

现在我想从文本文件导入数据并用来代替这个数组数据。我也想要文本文件数据的双型锯齿状数组。

文件中每行的数据格式为:5.1,3.5,1.4,0.2

文本文件中共有150行。我希望逐行读取文件,用逗号分隔并将每行保存在双精度数组中,如同rawData[]][]一样。

1 个答案:

答案 0 :(得分:0)

尝试使用 Linq ,你必须

  1. 逐行阅读文件
  2. 通过逗号
  3. 将每行分割为items
  4. 将每个项目转换为Double
  5. 将项目物化到(内部)数组
  6. 行物化为(外部)数组
  7. 实施

      // let txt file being a CSV-like one
      Double[][] data = File
        .ReadLines(@"C:\MyFile.txt")
        .Where(line => !String.IsNullOrEmpty(line.Trim())) // to remove empty lines if any
        .Select(line => line.Split(','))
        .Select(items => items
          .Select(item => Double.Parse(item, CultureInfo.InvariantCulture))
          .ToArray()) // inner array
        .ToArray();   // outer array