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
上一篇: 用Gson 实体类转换ZonedDateTime类型
下一篇: 微信公众平台接口开发:基础接口