数据库中有两个表.ModelTable和模型的值。 以下代码
MyDB_Tables contain : ID|GroupNumber|ModelName|Picture
****
MyDB_Tables Model_T = new MyDB_Tables();
ArrayList ArrList = new ArrayList();
List<long> T = new List<long>();
for (int i=0 ; i<5; i++)
{
T.add(i);
}
foreach (var item6 in T)
{
var MyList =ECommerce_Rep.Return_ModelByID(Convert.ToInt64(item6));
//Return_ModelByID is a function for return MyDB_Tables info by ID//
for (int k = 0; k < MyList.Count; k++)
{
Model_T.ID = MyList[k].ID;
Model_T.GroupNumber = MyList[k].GroupNumber;
Model_T.ModelName = MyList[k].ModelName;
Model_T.Picture = MyList[k].Picture;
ArrList.Add(Model_T);
}
}
假设有三个数字1,2,3与ID相关。顶部代码,查看返回ID = 3 3次。就像这个
ID =3 GroupNumber =1001 ModelName = CPU Core I3 Picture = 1.jpg
ID =3 GroupNumber =1001 ModelName = CPU Core I3 Picture = 1.jpg
ID =3 GroupNumber =1001 ModelName = CPU Core I3 Picture = 1.jpg
什么是解决方案?谢谢
答案 0 :(得分:0)
尝试将MyDb_Tables
设置为for
循环内的新实例,而不是您在循环外部进行的单个初始化。
原因是否则您要添加到ArrList
的项目都是对同一实例的引用,并且它们都会在每次迭代中得到更新,因此它们都会以相同的值结束(匹配MyList
中的最后一项。
如果你将它设置为循环内的新实例,那么ArrList
中的引用都将是唯一的:
for (int k = 0; k < MyList.Count; k++)
{
MyDB_Tables Model_T = new MyDB_Tables();
Model_T.ID = MyList[k].ID;
Model_T.GroupNumber = MyList[k].GroupNumber;
Model_T.ModelName = MyList[k].ModelName;
Model_T.Picture = MyList[k].Picture;
ArrList.Add(Model_T);
}
当你在它的时候,你也可以使用foreach并摆脱索引语法,你可以使用对象初始化器语法直接添加一个新对象:
foreach(var item in MyList)
{
ArrList.Add(new MyDB_Tables
{
ID = item.ID,
GroupNumber = item.GroupNumber,
ModelName = item.ModelName,
Picture = item.Picture
});
}