我的声明如下:
string[] lines = System.IO.File.ReadAllLines(file); foreach (string line in lines) { ... }
由于底层的.csv文件中有一个标题,这会导致我的错误.我想跳过这一行,但是当我使用时:
string [] lines = System.IO.File.ReadLines(file).Skip(1).ToArray();
让我String
无法使用Skip(1)
.当我尝试使用时同样的事情:
string[] lines = System.IO.File.ReadAllLines(file); lines = lines.Skip(1).ToArray();
给我带来同样的错误.
有谁有想法吗?我可以调整Foreach
循环成为一个For
循环,我解雇第一行?
问候,
编辑
我现在使用的代码是:
string[] lines = System.IO.File.ReadAllLines(file); lines = lines.Skip(1).ToArray(); foreach (string line in lines) { var cols = line.Split(';'); if (cols.Length == 1) continue; DataRow dr = tbl.NewRow(); dr[0] = file; for (int cIndex = 1; cIndex + 1 < tbl.Columns.Count; cIndex++) { dr[cIndex + 1] = cols[cIndex]; } } System.Text.StringBuilder b = new System.Text.StringBuilder(); foreach (System.Data.DataRow r in tbl.Rows) { foreach (System.Data.DataColumn c in tbl.Columns) { b.Append(c.ColumnName.ToString() + ":" + r[c.ColumnName].ToString()); } } MessageBox.Show(b.ToString()); return tbl;
这里b.ToString()返回Nothing(如NULL).之前我使用GetAllLines()时返回:
文件名:fileNameStore:storeQuantity:quantityfileName:fileNameStore:1000Quantity:30
它继续这样下去.
我的想法是,也许我已经做到了这样我只导入了一个很大的长字符串,所以当我跳过第一行时,它会变为NULL.
但这是我的第一个C#代码,所以我在解决这个问题时遇到了一些困难.
您当前的算法没有问题:
string[] lines = System.IO.File.ReadAllLines(file); lines = lines.Skip(1).ToArray();
只需确保您导入下面的命名空间.
using System.Linq;