从list []转换为二维对象[,]数组[C#]

时间:2018-01-17 06:53:22

标签: c#

我使用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[,]。我正在使用对象数组,因为数据有多种类型。

2 个答案:

答案 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;
        }