2015-11-05 17 views
-1

我有一个类,并在2 foreach循环我想将我的数据集中的表中的所有数据添加到我的类,但问题是:完成内部foreach循环后,下一个要复制的表也将替换ret中已有的记录,所以如果我有2个table1的1个表和2个行的2个表,我将在ret中有3个记录,但是表1中的所有数据被table2中的数据替换! 例如类数据添加将重写数据已存在

表1表2 -------- vyvy - - - - TE ST毫米DD SS立方厘米

但最后在ret而不是{te} {mm dd} {ss cc}我有{mm dd} {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); 
    } 
} 

回答

1

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); 
    } 
} 
+0

但在这种情况下,每次将被重置:

刚刚与循环的每个迭代创建一个新的实例?我需要在1个类的所有表中添加所有数据 – lol

+0

@lol:您正在混合一些术语,这会使您的描述难以遵循。每个实例将具有相同的类,因为它每次都被声明为相同的类型。或者你的意思是说你想让所有的数据以某种方式在类的一个实例中?在这种情况下,究竟是什么问题甚至是你想要做什么都不清楚。 – David

+0

我刚刚更新了我的问题,请您阅读它。非常感谢 – lol

相关问题