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 文件加载到二维数组中的主要内容,如果未能解决你的问题,请参考以下文章