当前位置:  开发笔记 > 编程语言 > 正文

在C#中使用System.IO.File.ReadAllLines(fil)跳过第一行

如何解决《在C#中使用System.IO.File.ReadAllLines(fil)跳过第一行》经验,为你挑选了1个好方法。

我的声明如下:

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#代码,所以我在解决这个问题时遇到了一些困难.



1> Ousmane D...:

您当前的算法没有问题:

string[] lines = System.IO.File.ReadAllLines(file);
lines = lines.Skip(1).ToArray();

只需确保您导入下面的命名空间.

using System.Linq;

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有