2012-04-22 35 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