类数据添加将重写已经存在的数据
本文关键字:数据 存在 重写 添加 | 更新日期: 2023-09-27 18:20:36
我有一个类,在 2 foreach 循环中,我想将数据集中表中的所有数据添加到我的类中,但问题是:在它完成内部 foreach 循环后,下一个要复制的表也将替换ret
中已有的记录,所以最后如果我有 2 个表的表1 行和表 2 的 2 行表,我将ret
有 3 条记录,但表 1 中的所有数据都替换为表 2 中的数据!例
1 表2-------- --------V y v y-- -- -- --TE 圣毫米 DD SS CC
但最终在 ret 而不是有 {te st}{mm dd}{ss cc} 我有 {mmdd}{mm dd}{ss cc} 我有帮助!
list<class> ret = new list<class>();
class FR = new class();
foreach (DataTable table in ds.Tables)
{
foreach (DataRow row in table.Rows)
{
if (String.IsNullOrEmpty(FR.v) || FR.v != row["v"])
{
FR.v = row["v"].ToString();
}
if (String.IsNullOrEmpty(FR.y) || FR.y != row["y"])
{
FR.y = row["y"].ToString();
}
ret.Add(FR);
}
}
FR
始终是同一个实例,因此每次对其设置值时,您都在对同一实例进行操作,并一遍又一遍地将其重新添加到集合中。
只需在循环的每次迭代中创建一个新实例:
List<SomeClass> ret = new List<SomeClass>();
foreach (DataTable table in ds.Tables)
{
foreach (DataRow row in table.Rows)
{
SomeClass FR = new SomeClass(); // <--- right here
if (String.IsNullOrEmpty(FR.v) || FR.v != row["v"])
{
FR.v = row["v"].ToString();
}
if (String.IsNullOrEmpty(FR.y) || FR.y != row["y"])
{
FR.y = row["y"].ToString();
}
ret.Add(FR);
}
}