使用c#将csv转换为双列表

时间:2017-07-19 20:02:19

标签: c# list csv double

使用以下代码我试图读取包含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);
    }

3 个答案:

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