嗨,只是一个问题......
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);
}
数据如下:(标题有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”...只是为了方便起见。
我收到同样的错误:lines[index] += "," + newColumnData[index - 1];
但是当通过调试器/ MessageBox检查时,index的值永远不会<0。
如何在第一个位置而不是最后一列添加新列?
答案 0 :(得分:0)
因此,如果您的数据有四行,这意味着您将在循环中获得四次迭代,这意味着它正在尝试从数组newColumnData的数组元素1,2,3和4中获取值。但是,newColumnData只有一个元素,索引为0,对吧?
如果你想为每一行添加相同的值,你应该将ForEach循环中间的行更改为:
lines[index] += "," + newColumnData[0];
最后,要在行的开头添加它,请执行以下操作:
lines[index] = newColumnData[0] + "," + lines[index];