无法使用List <string>从CSV读取

时间:2015-12-14 09:32:58

标签: c# csv

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

我没有收到任何构建错误,但控制台没有输出给定.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的顺序提取数字。

4 个答案:

答案 0 :(得分:1)

WriteLine的内容是List<string>.ToString()的值,这不是你想要的。分别对foreach列表和test每行进行WriteLine

答案 1 :(得分:1)

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

答案 2 :(得分:0)

您的示例将打印类似&#34; System.Collections.Generic.List&#39; 1 [System.String]&#34;这是因为Console.WriteLine()期望一个字符串(可以使用对象的ToString()方法接收它)但是你传递了一个List<>对象,其ToString()方法返回&# 34; System.Collections.Generic.List&#39; 1 [System.String]&#34;

相反,您需要使用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();

答案 3 :(得分:-1)

你可以这样做:

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

Link to the Answer