无法使用List<;从CSV读取;字符串>;

本文关键字:CSV 读取 gt 字符串 lt List | 更新日期: 2023-09-27 18:26:37

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

我没有收到任何构建错误,但控制台不会输出给定.csv.的内容

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

编辑:

这篇文章没有完整的帖子。

csv的内容是数字0-10,我需要根据请求提取文件的最后三个数字。

出于测试目的,csv目前已布局:

1
2
3
4
5

我想把数字按3、4、5的顺序拉出来。

无法使用List<;从CSV读取;字符串>;

您使用的是WriteLine的值List<string>.ToString(),这不是您想要的。请分别在test列表和WriteLine每行上尝试foreach

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

您的示例将打印类似于"System.Collections.Generic.List'1[System.String]"的内容。这是因为Console.WriteLine()需要一个字符串(可以使用对象的ToString()方法接收),但您向它传递了一个List<>对象,该对象的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();

你可以这样做:

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);
    }
}

链接到应答