问题是这样的:
我要循环调用一个存储过程来返回一个DataSet
我每次要把循环返回的DataSet中的特定列,添加到一个新的DataTable中
最后返回这个DataTable也就是说这个DataTable中的列是不固定的,是从DataSet中动态添加进来的
我的代码出错:(列“Section_Name”已属于另一个 DataTable。 )public DataTable DtRows_Cells(string strProject_ID, int iStartYear, int iEndYear)
    {
        DataSet ds = null;
        DataTable MainDt = new DataTable();
        Database db = DatabaseFactory.CreateDatabase(strConnectionString);        using (DbConnection dbCon = db.CreateConnection())
        {
            dbCon.Open();            for (int i = iStartYear; i <= iEndYear; i++)
            {
                ds = db.ExecuteDataSet("GetProject_Sale", strProject_ID, i.ToString());
                MainDt.Columns.Add(ds.Tables[0].Columns[0]);
            }
        }
        return MainDt;
    }

解决方案 »

  1.   

    不能这样直接添加另外一个datatable中的列。你可以认为datatable 就是一张存在数据库中的表。
      

  2.   

    试试Copy() 一条条添加数据吧
      

  3.   

    你的首先建立一个表的架构,
    然后才能填数据啊!!
     MainDt.Columns.Add(ds.Tables[0].Columns[0]); 
    你这句是干什么啊?
      

  4.   

    MainDt.Columns.Add(ds.Tables[0].Columns[0]); 
    是想创建一个列吧,应该这样写
    MainDt.Columns.Add(new DataColumn(ds.Tables[0].Columns[0])); 
      

  5.   

    不能将同一列添加到两个DataTable中 DataColumn   c   =   new   DataColumn( "id "); 
    myDataTable1.Columns.Add(c); 
    //myDataTable2.Columns.Add(c);   //   error //   创建一个新列 
    c   =   new   DataColumn( "id "); 
    myDataTable2.Columns.Add(c); 
      

  6.   

       dt.Columns.AddRange();这里的参数是DataColumn[]这个,你可以试一试
      

  7.   

                DataTable dt = new DataTable();
                DataSet ds = new DataSet();
                dt.Merge(ds.Tables[0],true,MissingSchemaAction.Add);
    把ds.TableS[0]合并到dt里,如果dt里没有ds列,将进行添加列.