C# 将表添加到数据集

C# 将表添加到数据集,c#,C#,可能重复: 我有两个孩子。。我需要检查数据集中的一个值,如果满足条件,则将该值分配给另一个数据集中。我可以获取值,但如果在检查datatable dtreturn后将其分配给数据集,则不会将其设置为dsreturn。 下面是我的代码: DataSet ds = datasetValue(); DataSet dsReturn = new DataSet(); DataTable dtReturn = dsReturn.Tables.Add(); dtRe

可能重复:

我有两个孩子。。我需要检查数据集中的一个值,如果满足条件,则将该值分配给另一个数据集中。我可以获取值,但如果在检查datatable dtreturn后将其分配给数据集,则不会将其设置为dsreturn。 下面是我的代码:

DataSet ds = datasetValue();

DataSet dsReturn = new DataSet();            
DataTable dtReturn = dsReturn.Tables.Add();       
dtReturn.Columns.Add("id");           
dtReturn.Columns.Add("description");       
dtReturn.Columns.Add("status");           
foreach (DataRow row in ds.Tables[0].Rows)    
{             
   if(Convert.ToInt32(row[1]) == status )          
   {
      DataRow newrowdata = dtReturn.NewRow();     

      // gives object ref not set to an instance of object...
      dsReturn.Tables["dtReturn"].ImportRow((row));

      //DataRow drReturn = dtReturn.NewRow();                
      //dsReturn.Tables["dtReturn"].Rows.Add(row);     
    }        
 }            
 return dsReturn; 
您正在使用

DataTable dtReturn = dsReturn.Tables.Add();
这将添加一个名为Table1或其他名称的
DataTable

dsReturn.Tables["dtReturn"].ImportRow((row));
这里使用的名称实际上是DataTable的实例名称,而不是
数据集中包含的名称。
DataSet
dsReturn中不存在dtReturn这样的表


也许添加这个应该可以实现这个技巧
dtReturn.TableName=“dtReturn”

您可以使用不同的方法:

DataSet dsReturn = new DataSet();

DataTable dtReturn = new DataTable("dtReturn");
dtReturn.Columns.Add("id");             
dtReturn.Columns.Add("description"); 
dtReturn.Columns.Add("status");

dsReturn.Tables.Add(dtReturn);
那么您如何处理newrowdata

编辑:


我修改了表名,如dsReturn.Tables[“Table1”].ImportRow((行));但是仍然得到相同的错误您是否通过设置
TableName
来检查它不一定总是Table1,还要检查调试期间得到的结果
dsReturn。Tables[“Table1”]
应该为空我检查了它。。在调试过程中是表1。这样,您就可以知道哪个值为null,我认为这应该是有效的。。设置表名有什么区别吗?没有。我已经设置了表名,但仍然…为什么不使用这个:DataRow newrowdata?
DataRow newrowdata = dtReturn.NewRow();
dsReturn.Tables["dtReturn"].ImportRow((newrowdata));