ReadAllText返回错误的值

时间:2013-08-06 11:01:41

标签: c# string csv

我正在尝试阅读一个文本文件,只取每五个字然后转到一个新行,感谢我之前的问题的反馈,我的代码现在看起来像这样

               string fileText =  File.ReadAllText(ofd.FileName).Replace(Environment.NewLine, ",");

               string[] lines = new string[]
                {
                    File.ReadAllText(ofd.FileName)
                };

               var fifthOnEachLine = lines.Select(x => x.Split(',')[4]);
                   objSqlCommands.sqlCommandInsertorUpdate2("INSERT",  fifthOnEachLine);//laClient[0]);

然而,当我运行代码时,我得到的数据如下所示:

        System.Linq.Enumerable+WhereSelectArrayIterator`2[System.String,System.String]                   

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您必须遍历查询结果,为结果中的每个项执行命令,如下所示:

foreach(var item in File.ReadAllLines(ofd.FileName).Select(x => x.Split(',')[4]));
{
    objSqlCommands.sqlCommandInsertorUpdate2("INSERT",  item);
}

BTW ,出于某种原因,您使用的是 File.ReadAllText(),它会返回所有文件内容的字符串。最有可能的是,您需要使用 File.ReadAllLines(),它将为您文件中的每一行返回字符串。

答案 1 :(得分:0)

正如Dmitriy所说,它应该是

List<String> words=File.ReadAllLines(path)
                       .Select(x=>if(Regex.Split(x,"\s+").Length>=5)Regex.Split(x,"\s+")[4])
                       .ToList();