参考:https://www.cnblogs.com/zhaotianff/p/9248157.html
LINQ 查询适用于实现的数据源 IEnumerable<T>接口或System.Query.IQueryable接口。
DataTable类默认是没有实现以上接口的。
所以要在DataTable中使用LINQ查询,需要调用一下AsEnumerable方法,返回一个EnumerableRowCollection<DataRow>集合。
这样我们就可以在DataTable中使用LINQ查询了
下列代码中 dt 是一个带有hashcode列的DataTable
查询:从DataTable中查询Name=张三的所有记录的ID的值,并去重
List<int> list1= (from a in dt.AsEnumerable() where a.Field<string>("Name")=="张三" select a.Field<int>("ID")).Distinct().ToList();
排序:
from a in dt.AsEnumerable().OrderBy(t=>t.Field<int>("ID"))
查询并得到DataTable:引用System.Data.DataSetExtensions.dll,并调用DataTableExtensions. CopyToDataTable< T>方法
DataTable tempDataTable = dt.AsEnumerable().OrderByDescending(x => x.Field<int>("ID")).CopyToDataTable<DataRow>();