我们知道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真的很强大啊?