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;
} 展开
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;
} 展开
展开全部
首先说明,用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,这个不能理解。
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,这个不能理解。
展开全部
代码太少了,看不出来啥
dtTemp = new DataTable();
dtTemp = SS.Tables[0];
这两句有问题,虽然,dttemp每次都引用了新的datatable()对象,但是,dtTemp = SS.Tables[0];这句改变了dttemp,所以每次循环都引用的同一个对象,然后,虽然执行了循环,list里面其实只加了一个datatable对象而已
dtTemp = new DataTable();
dtTemp = SS.Tables[0];
这两句有问题,虽然,dttemp每次都引用了新的datatable()对象,但是,dtTemp = SS.Tables[0];这句改变了dttemp,所以每次循环都引用的同一个对象,然后,虽然执行了循环,list里面其实只加了一个datatable对象而已
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的数据都是SS.Tables[0]啊,不然都是最后一个DT,只是TableName不同而已。(有点怀疑你有没有三行记录,因为只用到一个内存)
追问
我关键需要的就是 tablename的不同。目前与你说的恰恰相反:数据都压入了,但是tablename不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询