首页 新闻 会员 周边

Datatable的datarow怎么复制?

0
悬赏园豆:10 [已解决问题] 解决于 2012-07-28 20:07
 query = (from s in dt.AsEnumerable() where s["YsKinds"].ToString().Contains(hd.Value) select s).First();
                    TempDR = query;//复制给新行
                    TempDR["yskinds"] = dropzjsubject.Text; TempDR["bzr"] = dropzjbzr.Text;//给新行赋值
                    UpdateRows.Add(TempDR);//Ilist添加新行
                    foreach (DataRow ds in dt.Rows)
                    {
                        Response.Write(ds["YsKinds"].ToString() + " " + ds["bzr"].ToString() + "<br/>");//结果居然是新行赋值后的值?难道dr也驻留的?
                    }
happydaily的主页 happydaily | 菜鸟二级 | 园豆:301
提问于:2012-07-27 11:34
< >
分享
最佳答案
0

TempDR = query;//复制给新行

这不是复制,这是赋值,对于引用类型,是指定引用,也就是说 TempDR 和 query 指向同一个 DataRow.

你应该用 DataRow.Clone() ,克隆一个新的 DataRow.

收获园豆:10
Launcher | 高人七级 |园豆:45045 | 2012-07-27 11:53

有这方法吗,我怎么找不到

happydaily | 园豆:301 (菜鸟二级) | 2012-07-27 14:26

@happydaily: 我就给你写了个伪码,也就是表示一个意思,因为你的代码写错了,如果你能理解我写的伪码,那说明你知道自己错在那儿了,你现在这样问,表明你对DataTable,DataRowd的关系还是不明白,所以你才会写出 TempDR = query 和 UpdateRows.Add(TempDR) 这样的语句。

Launcher | 园豆:45045 (高人七级) | 2012-07-27 15:41
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册