Visual C# 无法将 CSV 文件加载到二维数组中

Posted

技术标签:

【中文标题】Visual C# 无法将 CSV 文件加载到二维数组中【英文标题】:Visual C# Cannot get CSV file to load into a 2D array 【发布时间】:2021-12-17 06:23:33 【问题描述】:

我有一个非常简单的 .csv 文件,其中包含 ID 和序列号 实际的应用程序不知道有多少行,但总是有两列

1,16600687 2,16600939 3,16604031 4,16607302

我已经设置了所有其他内容,但我只是将数据加载到一维数组中,逗号保留在数据中

我得到的结果是第三个位置的字符串值为 3,16604031 我如何将其分开,使其成为一个二维数组,其获取值 [2,0] 为 3,获取值 [2,1] 为 16604031?

private void button1_Click(object sender, EventArgs e)
     
         string stFileNamenPath = "(put location of file here)";
         DialogResult result = openFileDialog1.ShowDialog(); 
         StreamReader sr = new StreamReader(stFileNamenPath);  
         string[] sortArray = null;
         while (!sr.EndOfStream)
         
             string strResult = sr.ReadToEnd();
             sortArray = strResult.Split(new string[]  Environment.NewLine ,   StringSplitOptions.None);
         
         string stTest = (string)sortArray.GetValue(2);
         MessageBox.Show("string value for 3rd position is " + stTest);
     

CSV 文件

1,16600687
2,16600939
3,16604031
4,16607302

【问题讨论】:

【参考方案1】:

我想到的答案只是一个 LINQ Where 语句,后跟一个 Select 语句。前者用于过滤,后者用于实际重新映射您拥有的数据。你的代码会是这样的

        string stFileNamenPath = "(put location of file here)";
        //DialogResult result = openFileDialog1.ShowDialog();
        StreamReader sr = new StreamReader(stFileNamenPath);
        string[] sortArray = null;
        while (!sr.EndOfStream)
        
            string strResult = sr.ReadToEnd();
            sortArray = strResult.Split(new string[]  Environment.NewLine , StringSplitOptions.None);
        
        char separator = ',';
        var mappedArray = sortArray
            .Where(x => !string.IsNullOrEmpty(x) && !string.IsNullOrWhiteSpace(x))
            .Select(x => new string[]  x.Split(separator)[0], x.Split(separator)[1] ).ToArray();

        var stTest = mappedArray[2][1];
        MessageBox.Show("string value for 3rd position is " + stTest);

【讨论】:

效果很好。谢谢 不客气。任何“竖起大拇指”或积极反馈将不胜感激! 我没有足够的参与度来投票,但非常感谢您提供的简单而优雅的解决方案

以上是关于Visual C# 无法将 CSV 文件加载到二维数组中的主要内容,如果未能解决你的问题,请参考以下文章

无法将 csv 文件从 GCS 加载到 bigquery

将 CSV 文件中的行跳过到某个单词 C#

VB.NET:将 CSV 文件读入二维数组

AWS DMS - Oracle 到 PG RDS 完全加载操作错误 - 无法从 csv 文件加载数据

Visual Studio 设计器无法加载文件或程序集

c#中JSON字符串到CSV和CSV到JSON的转换