如何将DataSet转换为List <arraylist>?</arraylist>

时间:2011-11-16 10:09:43

标签: c# asp.net dataset

我有一个数据集ds和一个ArrayList新路径列表我希望将ds添加(赋值给新路径) 怎么可能。

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

如果我按照上述方式做,那么我收到错误 “'System.Collections.Generic.List.Add(System.Collections.ArrayList)'的最佳重载方法匹配'有一些无效的参数”

如果在某种程度上请帮帮我..怎么做

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

从您发布的代码中看起来好像您的newpath变量是ArrayLists列表。因此,当您尝试添加dRow DataRow时,您会收到错误,因为它不是ArrayList

如果您想添加DataRows,我认为newpath应该是DataRow的列表。如果你想用DataRow中的数据填充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);
 }

答案 2 :(得分:0)

更改新路径
List<ArrayList> 

List<DataRow>

答案 3 :(得分: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;