Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ReadAllText返回错误的值_C#_String_Csv - Fatal编程技术网

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()
执行迭代器variable
fifthOnEachLine
类型为System.Linq.Enumerable+其中选择ArrayInterator`2[System.String,System.String],您可以看到它的.ToString()表示,但它基本上是IEnumerable,因此,您必须迭代结果。添加此代码后,它仍然不会返回正确的数据,只是System.Linq.Enumerable+WhereSelectArrayIterator`2[System.String,System.String]稍微修改过的代码。foreach迭代上的调试器显示了什么?如果您将收到类似“OutOfRangeException”的消息,这意味着无法将行拆分为5个单词