从 Windows 窗体应用程序上的 CSV 文件读取数据并将其存储到 2D 数组

本文关键字:数据 存储 数组 2D 读取 文件 应用 窗体 Windows 应用程序 程序上 | 更新日期: 2023-09-27 18:32:15

我似乎无法让我的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

从 Windows 窗体应用程序上的 CSV 文件读取数据并将其存储到 2D 数组

您应该能够使用以下代码片段读取数据。我已将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();