我使用StreamReader
将csv数据拉入List<string[]>
,然后我想将其转换为二维数组,以便使用带循环的逻辑规则将数据提取到另一个类似的数组中(我想要能够单独访问[row,column]数据)。这是csv方法:
public static object[] CsvData(string filePath)
{
List<string[]> csvContent = new List<string[]>();
using (StreamReader sr = new StreamReader(filePath))
{
while (!sr.EndOfStream)
{
string[] lineArr = sr.ReadLine().Split(',');
csvContent.Add(lineArr);
}
}
return csvContent.ToArray();
}
目前我的对象数组输出是一维的。我尝试过以各种方式对其进行修改,但无法获得相加的维度,以便在返回时为我提供object[,]
。我正在使用对象数组,因为数据有多种类型。
答案 0 :(得分:0)
这应该让你开始:
var rows = csvContent.Count - 1;
var cols = csvContent.Max(x => x.Length + 1);
string[,] arr = new string[rows,cols];
foreach (var (x,index) in csvContent.SelectMany(x => x).Select((x,index) => (x,index))) {
var row = index / cols;
var col = index % cols;
arr[row,col] = x;
}
答案 1 :(得分:0)
它应该是:
public static List<object[]> CsvData()
{
List<object[]> csvContent = new List<object[]>();
///Code here
return csvContent;
}
或
public static List<string[]> CsvData()
{
List<string[]> csvContent = new List<string[]>();
///Code here
return csvContent;
}