欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

datatable相关增、删、改、查处理

程序员文章站 2022-06-15 12:37:27
...

最近做项目的时候主要应用了datatable的处理,感觉到了它的强大之处,在此作为记录,各位朋友如果发现更好的方法欢迎讨论

1、首先是当我们利用sql语句得到了一个datatable后如果要对他进行修改的时候,有的时候会提示此列无法修改,提示列**为只读,这可能是因为此列是通过聚合函数得到的值,可以将此列的只读属性修改为false即可

DataColumn dataColumn =datatable.Columns[i];  dataColumn.ReadOnly = false;

2、也可以进行两个datatable的合并dt1.Merge(dt2);  合并的两个表中相同的列会合并显示,不同的列会横向相接显示,如果想筛选列可以利用ToTable()传参:详细介绍可以参考:http://blog.csdn.net/highplayer/article/details/6613817

dt1.Merge(dt2);  DataView dv = new DataView(dt1);  TDLYTb = dv.ToTable(false, new[] { "dm", "mc" });

3、datatable根据条件查询,查询语句必须是某个条件语句

 DataRow[] drArray = dt.Select("SubString(XZQDM,10,3)<>'000'", "DM DESC,MC ASC");

4、datatable根据某一列排序:

dt.DefaultView.Sort = "DM ASC";                dt = dt.DefaultView.ToTable();

5、从一个DataTable中取一行放到另一个DataTable里报错: 该行已经属于另一个表

此处dt.rows.Add(dr[i].ItemArray);也可以使用

dt.ImportRow(dr[i]);

不可以使用dt.rows.Add(dr[i]);否则会报错

DataTable dt = new DataTable();
dt = TDLYTb.Clone();         
DataRow[] dr=dt1.Select("DM='001'"); 
//通过条件得到符合条件的行
for(int i=0;i<dr.Length;i++)
{
    //将数组元素加入表...
    dt.Rows.Add(dr[i].ItemArray);
}

6、datatable.Rows.Remove(dr)是真实的删除了此数据

datatable.Rows[i].Delete()只是将数据做了标记,datatable.AcceptChanges()才会提交,具体内容查看:https://www.cnblogs.com/jhxk/articles/2328744.html

7、datatable再删除的时候可以利用倒序的方式

for (int i = dt.Rows.Count - 1; i >= 0; i--)
{//删除所属代码和行政区代码相同的
     DataRow drItem = TDLYTb.Rows[i];
     if(drItem["XZQDM"].ToString().Equals(drItem["QSDWDM"].ToString()))
     {
         TDLYTb.Rows.Remove(drItem);
     }
}

8、datatable动态创建和查询等,如下:http://www.cnblogs.com/vaevvaev/p/6899165.html

https://www.cnblogs.com/roboot/p/5968810.html

相关标签: datatable