DataTable.DataRow的复制
经常遇到这种错误,“此行已属于另一个表”的错误,导致这个错误的语句如下:
或者
我分析了一下原因,因为DataRow DataTable 都是传引用调用的。所以一个行在一个表中了,就不能再增加到另外一个表。
具体的改善策略有两种:
1、 把原始DataRow的每列依次赋值。如下:
tempRow ["First"] = aDataRow ["First "]
tempRow ["second"] = aDataRow ["second "]
tempRow ["third"] = aDataRow ["third "]
tempRow ["forth"] = aDataRow ["forth "]
tempRow ["Fifth"] = aDataRow ["Fifth "]
……
dtPriceTable.Rows.Add(tempRow)
2、 循环DataTable的每列。如下:
foreach(DataColumn aDataColumn in dtItemPrice.Columns)
{
aDataRow[aDataColumn.ColumnName] = drItemPrices[i][aDataColumn.ColumnName];
}
InsertConditionType(aDataRow,dtItemPrice);
测试就可以了。
3、在表结构相同的情况下,如下面所示:
aDataRow.ItemArray = drItemPrices[i].ItemArray;
dtItemPrice.Rows.Add(aDataRow);
4、使用importRow的方法
常用方法 :
有两个表A和B,两表结构相同。现在需要将A表中部分行拷贝到B表中。
如果我们直接用 DataTableB.rows.add(dataTableA.rows[0]) 这样的方法式会报"row已经属于A表"这样的错误。
所以我们可以用另外的方法。
方法1,使用dataTable.ImportRow()方法。代码如下:
//得到A表中的部分行
DataRow[] drA = dtA.Select("aimtype=3");
//实例B
DataTable dtB = dtA.Clone();
if (drA.Length > 0)
{
foreach (DataRow drVal in drA)
{
//向B中增加行
dtB.ImportRow(drVal);
}
}
方法2,使用DataTable.Rows.Add(params object[] values)方法,代码如下:
//得到A表中的部分行
DataRow[] drA = dtA.Select("aimtype=3");
//实例B
DataTable dtB = dtA.Clone();
if (drA.Length > 0)
{
foreach (DataRow drVal in drA)
{
//向B中增加行
dtB.Rows.Add(drVal.ItemArray);
}
}
转载于:https://www.cnblogs.com/lhyqzx/p/5923030.html
DataTable.DataRow的复制相关推荐
- DataSet DataTable DataRow
DataSet 表示数据在内存中的缓存. 属性 Tables 获取包含在 DataSet 中的表的集合. ds.Tables["sjxx"] DataTable 表示内存中数据的 ...
- java datarow_DataSet DataTable DataRow 深入浅出
本篇文章适合有一定的基础的人去查看 ,最好学习过一定net 编程基础在来查看此文章. 1.概念 DataSet是ADO.NET的中心概念.可以把DataSet当成内存中的数据库,DataSet是不依赖 ...
- datatable DataRow
foreach (DataRow dr in dt.Rows) { ss = ss + dr["活动名称"].ToString() + ","; } 转载于:h ...
- Dataset/Datatable/Datarow转Json的一种方法
//以下三句為轉Dataset/Datatable為Json格式的一般方法. System.Web.Script.Serialization.JavaScriptSerializer serial = ...
- 表达式计算 DataTable/DataRow/DataColumn Expression、JScript CodeDomProvider Eval
- 两个datatable之间的复制
table1=table.Clone() for(int i=0;i<table.Rows.Count;i++) table1.ImportRow(table.Row ...
- DataRow复制一行到另一个DataTable
DataRow复制一行到另一个DataTable 下面两个方法是DataRow复制一行到另一个DataTable的,直接Add会出错"此行已属于另一个表",其实以前就知道怎么做的, ...
- C# DataRow数组转换为DataTable
public DataTable ToDataTable(DataRow[] rows) { if (rows == null || rows.Length == 0) return null; Da ...
- C# DataRow转DataTable
DataTable dta101 = new DataTable(); DataRow[] drz = dt.Select("MOVE_TYPE='101'");//生成DataR ...
最新文章
- 坐姿绳索划船 - 坐姿器械划船动作图解教程
- Java 的Comparator比较器用法
- migration mysql_MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例...
- 数学 —— 巧用进制
- 说一个闭包在实际开发中的应用
- 中国拟修订保守国家秘密法 严防通过互联网泄密
- TypeScript 官方决定全面采用 ESLint
- 10.TCP/IP 详解卷1 --- 动态选路协议
- SOME/IP不等同于SOA,CommonAPI-RPC通信和vsomeip基于消息通信
- 华为数通网络自动化开发学习笔记
- Import REC修复的时候找不到被调试程序进程
- android webp格式的图片,Android使用webp格式图片的步骤
- vue实现更换背景图片_vue动态设置style属性修改背景图片
- 微信每天处理2.05亿通话 运营商只剩卖流量
- Kotlin项目实战之手机影音---悦单条目实现及BaseListFragment抽取
- 力扣 26.删除有序数组中的重复项
- MusicLibrary:一个丰富的音乐播放封装库
- listview增大条目间距
- study mysql
- 《2022爱分析·营销服一体化实践报告》发布:营销服一体化重塑企业增长新链路