我已经看到以下代码在其他帖子中使用,它似乎被接受作为答案但是当我使用它时,它无法正常工作。其目的是拉出文本文件的最后三行并将其输出给用户。
我没有收到任何构建错误,但控制台没有输出给定.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的顺序提取数字。
答案 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);
}
}