c#索引超出了范围./写入CSV文件

本文关键字:写入 CSV 文件 范围 索引 | 更新日期: 2023-09-27 18:12:38

嗨,我有个问题…

foreach (string file in files)
{
    MessageBox.Show(String.Format("Name: {0}", file));
    List<string> newColumnData = new List<string>() { file };
    List<string> lines = File.ReadAllLines(file).ToList();
    lines[1] += ",Name";
    int index = 2;
    //add new column value for each row.
    lines.Skip(2).ToList().ForEach(line =>
    {
        //-1 for header
        MessageBox.Show(index.ToString());
        lines[index] += "," + newColumnData[index - 1];
        index++;
    });
    //write the new content
    File.WriteAllLines(file, lines);
}

数据看起来像:(Header有2行)

7/1/2014 to 7/11/2014               
 Category            Trans Date  Post Date   Merchant Name           Amount
Dining Out            6/30/2014  7/1/2014    CLASSICS MARKET CAFE     8.41
Dining Out            7/1/2014   7/2/2014    CHIPOTLE                 12.07
Dining Out            7/3/2014   7/6/2014    THAI CUISI               18.24
Groceries             7/2/2014   7/3/2014    FESTIVAL FOODS           12.79

我想添加一个新的列名示例"fileName",其值为"fileName"…只是为了方便。

  1. 我在:lines[index] += "," + newColumnData[index - 1];处收到相同的错误但是,当通过调试器/MessageBox检查时,index的值永远不会为<0。

  2. 如何在第一个位置添加新列而不是最后一列?

c#索引超出了范围./写入CSV文件

所以如果你的数据有四行,这意味着你将在循环中获得四次迭代,这意味着它试图从数组newColumnData的数组元素1,2,3和4中获取值。然而,newColumnData只有一个元素,索引为0,对吧?

如果您希望为每一行添加相同的值,则应该将ForEach循环中间的行更改为:

lines[index] += "," + newColumnData[0];

最后,要将它添加到行开头,请这样做:

lines[index] = newColumnData[0] + "," + lines[index];