2012-04-22 13 views
1

データベースをループして、日付範囲のある特定の行を探しています。 DataTable.Import(DataRow)を使用しようとするたびに、内部に値のない新しい行が追加されます。 DataRowをDataTableに「インポート」するにはどうすればよいですか? ここループです、ありがとう!でも、あなたの方法で仕事ができるC#でDataTableにDataRowオブジェクトを追加する

tempTd.Rows.Add(dr.ItemArray); 

いますが、原点から構造を対処あなたの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

あなたは別のデータテーブルからのDataRowをコピーするには、Addメソッドを使用することができます

DataTable tempTd = td.Clone(); 

Clone()メソッドを使用すると、元のデータテーブルと同じ構造で新しいデータテーブルを作成し、その中に行をインポートできます。

だからあなたの完全な方法はとなります:

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

関連する問題