读取CSV文件使用LINQ将输出保存到LIST

时间:2011-07-28 19:53:24

标签: linq

我有一个示例CSV文件,如下所示

  1. 1,A
  2. 2,B
  3. 3,C
  4. 代码:

    var query = File.ReadAllLines("test.txt")
                .Select(record => record.Split(','))
                .Select(tokens => new { clearNum = tokens[0], MPID = tokens[1] });
    
    foreach (var item in query)
    {
        Console.WriteLine("{0}, {1}", item.clearNum, item.MPID);
    }
    

    我可以打印这些物品。

    我需要将LINQ查询的输出发送到LIST

    public class icSASList     {         public string ClearNum {get;组; }         public string MPID {get;组; }     }

    列出clearList = new List;

2 个答案:

答案 0 :(得分:0)

我没有尝试编译它,但我认为你想要这样的东西?

var clearList = query.Select(x=>new icSASList(){ClearNum = x.clearNum, MPID = x.MPID}).ToList();

答案 1 :(得分:0)

在考虑了接受的答案之后,我想建议一个需要较少对象初始化的解决方案。如果列表很大,这将有所作为。

var query = File.ReadAllLines("test.txt")
.Select(record => record.Split(','))
.Select(tokens => new icSASList(){ ClearNum = tokens[0], MPID = tokens[1] }); 

var clearList = query.ToList();

哦,是的,使用record.Split(',')是天真的 - 通常允许在“(引用)字段中使用逗号,这会破坏您的程序。更好地使用http://www.filehelpers.com/之类的内容。