使用以下代码我试图读取包含double值的csv文件并将其转换为列表。如果我想打印该列表输出只包含“system.collections.generic.list1 system.string”。我的代码有什么问题?
var filePath = @"C:\Users\amuenal\Desktop\Uni\test.csv";
var contents = File.ReadAllText(filePath).Split(';');
var csv = from line in contents
select line.Split(';').ToList();
foreach (var i in csv)
{
Console.WriteLine(i);
}
答案 0 :(得分:1)
你的代码有些问题。首先,您应该使用ReadAllLines()
代替ReadAllText()
。其次,您的LINQ查询返回List<List<string>>
,我想这不是您想要的。我会尝试这样的事情:
var filePath = @"C:\Users\amuenal\Desktop\Uni\test.csv";
//iterate through all the rows
foreach (var row in File.ReadAllLines(filePath))
{
//iterate through each column in each row
foreach(var col in row.Split(';'))
{
Console.WriteLine(col);
}
}
答案 1 :(得分:1)
这应该做得很好。希望这会有所帮助。
var filePath = @"C:\Users\amuenal\Desktop\Uni\test.csv";
var contents = File.ReadAllLines(filePath);
var csv = (from line in contents
select line.Split(';')).SelectMany(x1 => x1);
foreach (var i in csv)
{
Console.WriteLine(i);
}
答案 2 :(得分:0)
csv是一个字符串列表的IEnumerable。 (换句话说,每个&#34; i&#34;是一个字符串列表)。
你需要两个循环:
foreach (var list in csv)
{
foreach(var str in list)
{
Console.WriteLine(str);
}
}