C# 无法使用列表从CSV中读取<;字符串>;

C# 无法使用列表从CSV中读取<;字符串>;,c#,csv,C#,Csv,我在其他帖子中看到过下面的代码,它似乎被接受为一个答案,但当我使用它时,它不能正常工作。其目的是提取文本文件的最后三行并将其输出给用户 我没有收到任何生成错误,但是控制台没有输出给定的.csv的内容 List<string> test = File.ReadAllLines("test.csv").Reverse().Take(3).Reverse().ToList(); Console.WriteLine(test); 我想按3、4、5的顺序提取这些数字。您要写的是List.T

我在其他帖子中看到过下面的代码,它似乎被接受为一个答案,但当我使用它时,它不能正常工作。其目的是提取文本文件的最后三行并将其输出给用户

我没有收到任何生成错误,但是控制台没有输出给定的.csv的内容

List<string> test = File.ReadAllLines("test.csv").Reverse().Take(3).Reverse().ToList();

Console.WriteLine(test);

我想按3、4、5的顺序提取这些数字。

您要写的是
List.ToString()
的值,这不是您想要的。请尝试在
test
列表上对每一行进行
foreach
ing,然后分别
WriteLine

您可以这样做:

foreach(var item in test )
{
Console.WriteLine(item);
}
using System.IO;

static void Main(string[] args)
{
    var reader = new StreamReader(File.OpenRead(@"C:\test.csv"));
    List<string> listA = new List<string>();
    List<string> listB = new List<string>();
    while (!reader.EndOfStream)
    {
        var line = reader.ReadLine();
        var values = line.Split(';');

        listA.Add(values[0]);
        listB.Add(values[1]);
    }

    foreach(var item in listA )
    {
       Console.WriteLine(item);
    }

    foreach(var item in listB )
    {
       Console.WriteLine(item);
    }
}
使用System.IO;
静态void Main(字符串[]参数)
{
var reader=newstreamreader(File.OpenRead(@“C:\test.csv”);
List listA=新列表();
List listB=新列表();
而(!reader.EndOfStream)
{
var line=reader.ReadLine();
变量值=行分割(“;”);
listA.Add(值[0]);
列表B.添加(值[1]);
}
foreach(列表A中的变量项)
{
控制台写入线(项目);
}
foreach(列表B中的var项)
{
控制台写入线(项目);
}
}

您的示例将打印类似于“System.Collections.Generic.List'1[System.String]”的内容,这是因为
控制台.WriteLine()
需要一个字符串(可以使用对象的ToString()方法接收该字符串),但您向其传递了一个
列表
对象,其ToString()方法返回“System.Collections.Generic.List'1”[System.String]”

相反,您需要使用
foreach
循环从列表中检索每个字符串,然后在检索时打印每个字符串

例如:

var lst = new List<string>();

lst.Add("test1");
lst.Add("test2");
lst.Add("test3");           

foreach (var item in lst)
{
    Console.WriteLine(item); // item, not list
}
Console.Read();
var lst=newlist();
第1条添加(“测试1”);
第1条添加(“测试2”);
第1条添加(“测试3”);
foreach(lst中的var项目)
{
Console.WriteLine(item);//item,而不是list
}
Console.Read();

如果您能让我们知道您的csv的外观以及预期的输出,那将是非常值得的。文件中有什么?正在打印到控制台的是什么?创建一个“它无法正常工作”这意味着什么?你得到了什么而不是预期的结果?遵循Ryan Searle的答案。使用foreach来编写列表内容,它工作正常。不要复制答案。不要使用
string.Split()解析CSV
。您可能只是将问题标记为重复问题,而不是复制相关答案的代码。好的,谢谢您提供的信息。我不再复制代码。但是我导入了Answare。我只复制了上面的代码,不知道它来自何方。请参阅OPs更新。无需将文件中的行拆分为一行em包含在每行中。因此您的答案已过时。这仍然会输出“System.Collections.Generic.List'1[System.String]”,但有什么想法吗?修复的WriteLine是项,而不是lst。代码正在工作,谢谢!
var lst = new List<string>();

lst.Add("test1");
lst.Add("test2");
lst.Add("test3");           

foreach (var item in lst)
{
    Console.WriteLine(item); // item, not list
}
Console.Read();