C# 关于 DataTable 的一些使用

时间:2023-02-07 15:26:16

1.抽取其中的distinct数据

DataTable dt;

DataView dv = dt.DefaultView;

 //ToTable()的第一个参数为是否DISTINCT
DataTable dtDistinct = dv.ToTable(true,"FieldName1","FieldName2","...");

2.使用Select筛选数据

 //查询
DataRow[] drArr = dt.Select("C1='abc'"); //模糊查询
DataRow[] drArr = dt.Select("C1 LIKE 'abc%'");
//另一种模糊查询的方法
DataRow[] drArr = dt.Select("'abc' LIKE C1 + '%'", "C2 DESC"); //排序
DataRow[] drArr = dt.Select("C1='abc'", "C2 DESC");

3.使用Find根据主键值查找数据 (为DataTable设置主键)

//为dt设置主键
DataColumn[] col = new DataColumn[] { (dt.Columns["col1"]) };
dt.PrimaryKey = col;
//根据主键值查找
DataRow dr = dt.Rows.Find(""); //为dt设置主键(联合主键 col1 col2)
DataColumn[] col = new DataColumn[] { (dt.Columns["col1"]), dt.Columns["col2"] };
dt.PrimaryKey = col; object[] obj = new object[] { "", "2" };
//根据主键值查找 col1=0 && col2=2 的数据
DataRow dr = dt.Rows.Find(obj);

如果我们要把这些按给定条件筛选出来的数据重新赋给一个新的DataTable

错误示范:

 DataTable dtNew = dt.Clone();
for (int i = ; i < drArr.Length; i++)
{
dtNew.Rows.Add(drArr[i]);
}

(这样会提示DataRow属于其他DataTable)

应该使用下面方法进行赋值:

 DataTable dtNew = dt.Clone();
for (int i = ; i < drArr.Length; i++)
{
dtNew.ImportRow(drArr[i]);
}

参考链接:

https://blog.csdn.net/dengsunshine69/article/details/48004241

https://www.cnblogs.com/jianxm/archive/2009/03/31/1426681.html

https://blog.csdn.net/wfflzt/article/details/47010049