2011-11-16 82 views
0

我有一個數據集ds和ArrayList newpath的列表,我想添加(分配)ds到新路徑 這怎麼可能。如何將DataSet轉換爲列表<ArrayList>?

public List<ArrayList> newpath 
    { 
     set { ViewState["newpath"] = value; } 
     get 
     { 
      if (ViewState["newpath"] == null) 
       return new List<ArrayList>(); 
      else 
       return (List<ArrayList>)ViewState["newpath"]; 
     } 
    } 

我與

foreach (DataRow dataRow in Ftb.Rows)//Ftb is datatable 
{ 
    newpath.Add(dataRow);//newpath is List<ArrayList> 
} 

foreach (DataRow dRow in ds.Tables[0].Rows) 
{ 
    newpath.Add(dRow); 
} 

想,如果我在做類似上面這樣的話,我正在錯誤 「的爲「系統最佳重載方法匹配。 Collections.Generic.List.Add(System.Collections.ArrayList)'有一些無效參數「

請幫助我,如果在某些方面..如何做到這一點

+1

正如你不能將字符串添加到整數的列表,您不能將數據行添加到數組列表,它是一個數據行而不是數組列表。創建一個新的數組列表,然後將行中的數據添加到數組列表,然後將其添加到數組列表。 –

+2

它只是我,還是'List '只是味道錯了?同上ViewState中的任何東西的List? – SWeko

+2

最大的問題是,你想用這個'List '來做什麼?你確定你確實需要一個'List '? – Oliver

回答

2

我假設你希望每個newpath中的項包含每一行的列值?
如果是這樣,而不是有這樣的代碼:

foreach (DataRow dataRow in Ftb.Rows)//Ftb is datatable 
{ 
    ArrayList values = new ArrayList(); 
    foreach (object value in dataRow.ItemArray) 
     values.Add(value); 
    newpath.Add(values); 
} 
+0

爲什麼不用構造函數填充它'ArrayList values = new ArrayList(dataRow.ItemArray)'? – Oliver

+0

但在新路徑值中沒有添加 – Rocky

+0

即使它只包含一行,也應該在大括號中添加大括號。可讀性和維護性更好。 – elsni

0

從您發佈的代碼,它看起來好像你的newpath變量是列表ArrayLists。因此,當您嘗試添加dRowDataRow時,您會收到一條錯誤消息,因爲它不是ArrayList

如果你想添加DataRows,我認爲newpath應該是DataRow的列表。如果你想從DataRow中填充數據的ArrayList你需要這樣的事情 - 從

List<ArrayList> 

foreach (DataRow dataRow in Ftb.Rows)//Ftb is datatable 
{ 
     ArrayList myAL = new ArrayList(); 
     myAL.Add(dataRow["your_column_name"]); 
     //add fields from DataRow to array list using your required logic 
     newpath.Add(myAL); 
} 
+0

是的,他確實這麼說。 –

+0

是的,newpath是ArrayList List的一個屬性 – Rocky

0

變化NEWPATH到

List<DataRow> 
0

我已經修改@Shadow嚮導代碼,現在它工作正常

List<ArrayList> newval = new List<ArrayList>(); 
    foreach (DataRow dRow in ds.Tables[0].Rows) 
     { 
     ArrayList values = new ArrayList(); 
     foreach (object value in dRow.ItemArray) 
      values.Add(value); 
      newval.Add(values); 
     } 
newpath = newval; 
相關問題