将数据从CSV读取到数组数组(C#)

时间:2014-07-01 18:19:22

标签: c# arrays csv jagged-arrays

我打开了CSV文件,但我无法弄清楚如何将结果数组拆分成另一个数组。我目前有以下代码,希望它更能让我了解我的意思:

    private void ReadFileToArray(StreamReader file)
    {
        int i = 0;
        string[][] FP_GamesArray;
        while (!file.EndOfStream)
        {
            string line = file.ReadLine();
            if (!String.IsNullOrWhiteSpace(line))
            {
                string[] values = line.Split(',');
                MessageBox.Show(values.ToString());
                FP_GamesArray[i] = values;
            }
            i++;
        }
    }

有什么想法吗?我收到两个错误:一个说Cannot implicitly convert type 'string[]' to 'string',第二个说Use of unassigned local variable 'FP_GamesArray'

2 个答案:

答案 0 :(得分:6)

你需要初始化你的数组,为此你需要知道那里有多少行。

您可以执行以下操作,而不是逐行阅读:

string[][] FP_GamesArray = File.ReadLines("path")
                          .Select(line => line.Split(','))
                          .ToArray();

或者说,你可以从List<string[]>开始,使用它的add方法,然后在读完后将其转换为数组,如下所示:

List<string[]> lines = new List<string[]>();
while (!file.EndOfStream)
{
     string line = file.ReadLine();
     if (!String.IsNullOrWhiteSpace(line))
     {
         lines.Add(line.Split(',');   
     }
}

string[][] FP_GamesArray = lines.ToArray();

答案 1 :(得分:0)

作为制作清单的补充答案,以下是我能够开展的工作:

  List<string> rows = MyCSVString.Replace("\n", "").Split('\r').ToList();
  List<List<string>> listedMatrix = new List<List<string>>();
  foreach(var x in rows)
  {
    if(x != "")
    {
      var rowList = x.Split(',').ToList();
      listedMatrix.Add(rowList);
    }
  }
  • 是的,逗号会弄乱它,因为这不是真正的解析。