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

C# 在windows窗体应用程序上从CSV文件读取数据并将其存储到2D数组,c#,arrays,csv,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.EndOfStrea

我似乎无法将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++;
    }
试试看
{
字符串值;
fs=newfilestream(路径,FileMode.Open,FileAccess.Read);//为读取而打开
//文件已打开;现在可以读取它了
sr=新的StreamReader(fs);
而(!sr.EndOfStream)
{
line=sr.ReadLine();
零件=直线分割(',');
对于(int i=0;i
这是我的csv文件的外观:


您应该能够通过下面的代码片段读取数据。我已将
nrValues
更改为整数,并且我使用的是
parts.Length
而不是
size.Length
,因为您没有包含
size
的定义。但是,请查看此答案末尾的改进版本。Usi您可以在两行代码中实现相同的代码

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++;
            }
        }
    }
}

您应该能够使用下面的代码片段读取数据。我已将
nrValues
更改为整数,并且我使用
部分。Length
而不是
size.Length
,因为您没有包含
size
的定义。但是,请查看此答案末尾的改进版本。使用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++;
            }
        }
    }
}

您还将
nrValues
定义为字符串而不是int,这将导致编译错误,至少对于nrValues++。您还将
nrValues
定义为字符串而不是int,这将导致编译错误,至少对于nrValues++。既然其中一个问题实际上与变量类型有关,我是否会如果在代码段中声明类型而不是使用
var
?@Ciara,那就没什么帮助了。我已经更新了帖子,明确定义了类型。使用var有点专业惰性:-)我同意在这种情况下,显式定义类型更好。因为问题之一实际上是变量类型,不是吗如果在代码段中声明类型比使用
var
?@Ciara更有帮助,我已经更新了帖子来显式定义类型。使用var有点专业惰性:-)我同意在这种情况下显式定义类型更好。