如何使用linq读取DataTable集合?AsQueryable() 和 AsEnumerable()区别?
一、准备工作
引入linq和data 相关的using命名空间
DataTable dt=new DataTable();//dt的来源可以是多个地方,比如:数据库,Excel等等。我这里使用Excel.
二、获取DataTable的列名及数据类型的方法
有了这个方法就不必考虑来源中的列名和数据类型,这里就可以查找到。
foreach (DataColumn dc in dt.Columns)//获取DataTable中的列名,这里的dt由于是从Excel导入所有列名为:F1,F2,F3,F4... { MessageBox.Show(string.Format("列名:{0} ,数据类型:{1}", dc.ColumnName, dc.DataType)); }
三、进行linq获取操作
这里获取到的东西我们存到一个List里面。
List<string> s = (from a in dt.AsEnumerable()//每次用Linq来操作集合的时候都会用到AsQueryable()和AsEnumerable(),下面我们讲区别 select a.Field<string>("F2")).ToList<string>();//这里的“F2”就是列名 foreach (var item in s) { MessageBox.Show("Test:" + item.ToString());//读取结果显示 }
四、AsQueryable()和AsEnumerable()的区别?
区别就大了 AsEnumerable() 是 LINQ TO OBJECT
AsQueryable 是 LINQ TO SQL