C# ReadAllText返回错误的值
我试着读入一个文本文件,只取五个单词,然后换一行,多亏了我以前问题的反馈,我的代码现在看起来是这样的C# ReadAllText返回错误的值,c#,string,csv,C#,String,Csv,我试着读入一个文本文件,只取五个单词,然后换一行,多亏了我以前问题的反馈,我的代码现在看起来是这样的 string fileText = File.ReadAllText(ofd.FileName).Replace(Environment.NewLine, ","); string[] lines = new string[] { File.ReadAllTex
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]
有人知道如何解决这个问题吗 必须迭代查询结果,对结果中的每个项执行命令,如下所示:
foreach(var item in File.ReadAllLines(ofd.FileName).Select(x => x.Split(',')[4]));
{
objSqlCommands.sqlCommandInsertorUpdate2("INSERT", item);
}
顺便说一句,出于某种原因,您正在使用File.ReadAllText(),它返回所有文件内容的字符串。最有可能的情况是,您需要使用File.ReadAllLines(),它将为文件中的每一行返回字符串。正如Dmitry所提到的,它应该是
List<String> words=File.ReadAllLines(path)
.Select(x=>if(Regex.Split(x,"\s+").Length>=5)Regex.Split(x,"\s+")[4])
.ToList();
List words=File.ReadAllLines(路径)
.选择(x=>if(Regex.Split(x,“\s+”)。长度>=5)Regex.Split(x,“\s+”)[4])
.ToList();
使用ToList()
执行迭代器variablefifthOnEachLine
类型为System.Linq.Enumerable+其中选择ArrayInterator`2[System.String,System.String],您可以看到它的.ToString()表示,但它基本上是IEnumerable,因此,您必须迭代结果。添加此代码后,它仍然不会返回正确的数据,只是System.Linq.Enumerable+WhereSelectArrayIterator`2[System.String,System.String]稍微修改过的代码。foreach迭代上的调试器显示了什么?如果您将收到类似“OutOfRangeException”的消息,这意味着无法将行拆分为5个单词