本文主要是介绍DataTable行筛选,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
筛选DataTable中的数据,使用 Select()方法,筛选结果可以保存到 DataRow[] drArr 也可以另存为一个新DataTable
筛选示例:
DataRow[] drArr = dt.Select("C1='abc'");//查询(如果Select内无条件,就是查询所有的数据)
DataRow[] drArr1 = dt.Select("C1 LIKE 'abc%'"); //模糊查询(如果的多条件筛选,可以加 and 或 or )
DataRow[] drArr2 = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC"); //另一种模糊查询的方法
DataRow[] drArr3 = dt.Select("C1='abc'", "C2 DESC"); //按C2倒序排序
DataRow[] drArr4 = dt.Select("[Student Name] Like '王%'") //如果列名中间有空格 需要加一个中括号
筛选结果存储:
DataTable dtNew2 = dt.Clone(); //复制结构
for (int i = 0; i < drArr.Length; i++)
{dtNew2.ImportRow(drArr[i]); //ImportRow 是复制
}
其中排序也可以通过方法实现:
public void SortDataTable(DataTable dt)
{dt.DefaultView.Sort = "id desc";//重新设置排序DataTable dtNew = dt.DefaultView.ToTable(); //保存在一张新表中
}
--------------------------------------------------------------------------------------
理解了上面的方法后,写了以下的固定方法,随时可以调用
/// <summary>查找dataTable表/// /// </summary>/// <param name="strFilter">过滤语句</param>/// <param name="orginalDt">dataTable</param>/// <returns></returns>public static DataTable FilterDataTable(string strFilter, DataTable orginalDt){DataRow[] drArr = orginalDt.Select(strFilter);DataTable newDt = new DataTable();newDt = orginalDt.Clone(); for (int i = 0; i < drArr.Length; i++){newDt.ImportRow(drArr[i]); }return newDt;}
调用:
string strFilter=@"姓名 like '王%' and 性别 = '男' and 姓名 ASC" //查找姓名列的王姓、男性,并按照姓名正序排列
dataGridView.DataSource=FilterDataTable(strFilter,myDt) //myDt是你原先的datatable
这篇关于DataTable行筛选的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!