C#把一个datatable中的数据复制到另一张datatable

实际开发中往往需要把一个dataTable中的数据根据条件过滤,然后把新数据赋给另外一张表(即返回过滤后的数据),
比如:有一个datatable dt;另一个datatable dt1;
DataRow dr=dt.select("id=1");
然后
dt1.Rows.Add(dr[0]);
但是这时会提示错误信息:这一行数据已经属于其他表,本节内容就是讲解如何把一个dataTable中的数据赋给新的dataTable
代码如下:
/// <summary>       
/// 执行DataTable中的查询返回新的DataTable        
/// </summary>        
/// <param name="dt">源数据DataTable</param>        
/// <param name="condition">查询条件</param>       
/// <returns></returns>        
public static DataTable GetNewDataTable(DataTable dt, string condition)        
   {          
     DataTable newdt = new DataTable();            
     try            
        {                
           newdt = dt.Clone();                
           DataRow[] dr = dt.Select(condition); // 克隆dt的结构,包括所有dt架构和约束,并无数据       
           for (int i = 0; i < dr.Length; i++)                
             {                    
              newdt.ImportRow((DataRow)dr[i]);                
            }               
          return newdt;//返回的查询结果           
       }            
     catch (Exception ex)           
       {                
           MessageBox.Show(ex.Message);                
           return newdt;            
       }     
  } 


其中 newdt.ImportRow((DataRow)dr[i]); 也可以换成newdt.Rows.Add(dr[i].ItemArray);

posted @ 2014-02-10 16:23  狼者为王  阅读(6902)  评论(0编辑  收藏  举报