2015-11-05 54 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