首页 > 技术文章 > Linq操作DataTable

wangdongying 2020-07-31 17:01 原文

参考: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. CopyToDataTableT>方法

  DataTable tempDataTable = dt.AsEnumerable().OrderByDescending(x => x.Field<int>("ID")).CopyToDataTable<DataRow>();

 

  

推荐阅读