我有一个像这样的语句:
string[] lines = System.IO.File.ReadAllLines(file);
foreach (string line in lines)
{
...
}
由于底层的 .csv 文件中有标题,导致我出现了错误。我想跳过这一行,但是当我使用以下代码时:
string [] lines = System.IO.File.ReadLines(file).Skip(1).ToArray();
当我尝试使用Skip(1)
时,发现String
无法使用。同样的情况也出现在我尝试使用以下代码时:
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(即空值)。之前当我使用 GetAllLines() 时,它返回的是:
fileName:fileNameStore:storeQuantity:quantityfileName:fileNameStore:1000Quantity:30
类似这样的一串字符。
我的想法是,可能我只导入了一个很长的字符串,所以当我跳过第一行时,它就变成了 NULL。
但这是我第一次编写 C# 代码,所以我在解决问题方面遇到了一些困难。
StreamReader
并调用reader.ReadLine()
来忽略第一行,然后处理每一行呢? - mrogal.skiSystem.IO.File.ReadLines(file)
不会返回一个字符串。 - Jeroen van Langen