2012-04-22 4 views
1

Я пытаюсь пропустить мою базу данных, ища конкретные строки с диапазонами дат. Всякий раз, когда я пытаюсь использовать DataTable.Import (DataRow), он добавляет новую строку без значений внутри. Как мне «импортировать» DataRow в DataTable? Вот петля, спасибо!Добавление объекта DataRow в DataTable в C#

 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 из одного DataTable в другой:

tempTd.Rows.Add(dr.ItemArray); 

Даже ваш метод может работать, но вы должны создать свой DataTable справляясь структуру от начала координат:

DataTable tempTd = td.Clone(); 

с помощью метода Clone() вы создаете новый DataTable с такой же структурой исходного 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

Смежные вопросы