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

最近做项目的时候主要应用了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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值