无法使用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的顺序拉出来。
您使用的是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);
}
}
链接到应答