C# List<TABLE>=new List<DataTable>();比如新增三个DT后,发现LIST中的是数据都是最后一个DT,请赐教。

…………FOREACH^dtTemp=newDataTable();dtTemp=SS.Tables[0];dtTemp.TableName=Drow["AA"].ToS... …………FOREACH^
dtTemp = new DataTable();
dtTemp = SS.Tables[0];
dtTemp.TableName = Drow["AA"].ToString();
dtTempList.Add(dtTemp);
…………
-----
dtTemp = new DataTable();
dtTemp=sGetComBoxTable(Drow["XXX"].ToString());
dtComboxList.Add(dtTemp);
---private DataTable sGetComBoxTable(string sSplitStrSrc,string sTableNmae)
{// 名~1*称~2
dReturnTable = new DataTable();
dReturnTable = dtComBoxInfo;
dReturnTable.TableName = sTableNmae;
return dReturnTable;
}
展开
 我来答
TitanTao
2013-08-02 · TA获得超过651个赞
知道小有建树答主
回答量:207
采纳率:100%
帮助的人:222万
展开全部
首先说明,用new构建的是不会出现这种情况的,比如:
datatable dt1=new datatbale();
datatable dt2=new datatable();
datatable dt3=new datatable();
list<datatable> x = new list<datatable>();
x.add(dt1);
x.add(dt2);
x.add(dt3);
new构造实质本来就是在堆上开辟一块新的内存存储数据结构。按照以上代码是不会出现你的情况的。你的代码中dttemp=ss.tables[0]有问题,说明你添加的dt都指向一块内存地址,new之后又指向列表中的第一个元素,这个相当于间址寻址,new的内存中只是存放了列表第一项元素的地址而已,并不是一块数据结构。
其次,dataset本来就是一个datatable的集合类,不用这个反倒要去构建一个泛型列表来存放dt,这个不能理解。
明飞兰3B
2013-08-02 · TA获得超过548个赞
知道小有建树答主
回答量:535
采纳率:55%
帮助的人:260万
展开全部
代码太少了,看不出来啥
dtTemp = new DataTable();
dtTemp = SS.Tables[0];
这两句有问题,虽然,dttemp每次都引用了新的datatable()对象,但是,dtTemp = SS.Tables[0];这句改变了dttemp,所以每次循环都引用的同一个对象,然后,虽然执行了循环,list里面其实只加了一个datatable对象而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇宙之心眼
2013-08-02 · TA获得超过623个赞
知道小有建树答主
回答量:610
采纳率:100%
帮助的人:408万
展开全部
你的数据都是SS.Tables[0]啊,不然都是最后一个DT,只是TableName不同而已。(有点怀疑你有没有三行记录,因为只用到一个内存)
追问
我关键需要的就是 tablename的不同。目前与你说的恰恰相反:数据都压入了,但是tablename不同
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式