代码改变世界

Linq学习之路(05) - 教你如何使用Linq To CSV

2013-05-18 22:21  ARMdong  阅读(1788)  评论(2编辑  收藏  举报

我们知道Linq to Objects、Linq to SQL、Linq to XML非常方便,但是Linq同样也可以处理csv文件,今天我将告诉大家使用Linq处理文本文件同样很爽!!!!

csv文件是(逗号分隔值)的英文缩写,通常都是纯文本文件。每个值都是通过逗号“,”分隔开来的。现在我这里有一个学生表,里面有几条学生信息,是用csv文件保存起来的,我截图给大家看看:

 

接下来我使用Linq将students.csv文件中的这些学生信息输出到控制台中:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.IO;
 6 
 7 namespace LinqToCSVDemo
 8 {
 9     class Program
10     {
11         static void Main(string[] args)
12         {
13             var students = from student in File.ReadAllLines("students.csv")
14                            where !student.StartsWith("#")
15                            let line = student.Split(',')
16                            select new
17                            {
18                                Name = line[0],
19                                Age = line[1],
20                                Sex = line[2],
21                                Birthday = line[3],
22                                Hobby = line[4]
23                            };
24 
25             ObjectDumper.Write(students);
26             Console.ReadKey();
27         }
28     }
29 }

输出结果:

是不是感觉很不可思议?这里我对上面的代码简单的解释一下:

第13行是将students.csv文件读取到内存中,File.ReadAllLines()方法是定义在System.IO命名空间下的,他的功能就是将students.csv文件中的所有行都取出来。

第14行是将过滤掉标题行

第15行是将每行按“,”分割放入到line的char[]数组中

第16到23行是定义一个匿名类,保存Student对象。

 

好吧,这个小小的案例我就说这么多了,大家是不是感觉Linq真的很强大啊?