从Windows窗体应用程序上的CSV文件读取和存储数据到2D阵列

时间:2016-01-28 16:29:59

标签: c# arrays csv

我似乎无法将我的csv文件存储到2D数组中。

这是我的代码到目前为止的样子:

try
{
    string nrValues;
    fs = new FileStream(path, FileMode.Open, FileAccess.Read); //    open for reading
    // the file has opened; can read it now
    sr = new StreamReader(fs);

    while (!sr.EndOfStream)
    {
        line = sr.ReadLine();
        parts = line.Split(',');
        for (int i = 0; i < sizes.Length; i++)
        {
            textiles[nrValues, i] = parts[i];
        }

        nrValues++;
    }

这就是我的csv文件:

csv

1 个答案:

答案 0 :(得分:0)

您应该可以使用下面的代码段阅读您的数据。我已将nrValues更改为整数,我使用的是parts.Length而不是sizes.Length,因为您没有包含sizes的定义。但是,请在本答案结尾处查看改进版本。使用LINQ,您可以在两行中实现相同的代码。

using System.IO;

namespace ConsoleApplication23
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            int nrValues=0;
            FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read); //    open for reading
            // the file has opened; can read it now
            StreamReader sr = new StreamReader(fs);

            string[,] textiles = new string[6, 4];

            while (!sr.EndOfStream)
            {
                string line = sr.ReadLine();
                string[] parts = line.Split(',');

                for (int i = 0; i < parts.Length; i++)
                {
                    textiles[nrValues, i] = parts[i];
                }
                nrValues++;
            }
        }
    }
}

但是,如果您对结果是锯齿状数组而不是2D数组感到满意,则可以使用LINQ编写相同的代码:

var lines = File.ReadAllLines(path);
var textiles = lines.Select(line => line.Split(',')).ToArray();