2012-04-22 168 views
1

我想通过我的数据库循环查找具有日期范围的特定行。 每当我尝试使用DataTable.Import(DataRow)时,它会添加一个没有值的新行。 如何将DataRow“导入”DataTable? 这是循环,谢谢!将DataRow对象添加到C#中的DataTable中#

 public DataTable FilterDataTableByDates(DataTable td, DateTime from, DateTime to) 
    { 
     DataTable tempTd = new DataTable(); 
     foreach (DataRow dr in td.Rows) 
     { 
      long ticks = Convert.ToInt64(dr["cpd_date"].ToString()); 
      if (ticks > from.Ticks && ticks < to.Ticks) 
      { 
       tempTd.ImportRow(dr); 
      } 
     } 
     return tempTd.Copy(); 
    } 

回答

2

您可以使用Add方法将一个DataRow从一个数据表复制到另一个:

tempTd.Rows.Add(dr.ItemArray); 

即使你的方法可以工作,但你必须创建你的DataTable应对从原点结构:

DataTable tempTd = td.Clone(); 

随着Clone()方法创建一个新的DataTable与原始数据表的结构相同,那么您可以在其导入一行。

所以,你的完整方法将成为:

public DataTable FilterDataTableByDates(DataTable td, DateTime from, DateTime to) 
{ 
    DataTable tempTd = td.Clone(); 
    foreach (DataRow dr in td.Rows) 
    { 
     long ticks = Convert.ToInt64(dr["cpd_date"].ToString()); 
     if (ticks > from.Ticks && ticks < to.Ticks) 
     { 
      tempTd.ImportRow(dr); 
     } 
    } 
    return tempTd.Copy(); 
} 
+0

谢谢老兄你摇滚 – user1326293 2012-04-22 10:17:23