2015-08-19 2 views
0

У меня есть один datatable, называемый dt, который имеет столбцы, такие как дата, имя, тема. Я хочу скопировать часть этого dt в другой dat3 dat3, используя условие.Копирование одного datatable в другое datatable C#

foreach (DataRow row in dt.Rows) 
{ 
     cellData =(DateTime)row["date"]; 
     dt3 = dt.AsEnumerable() 
       .Where (rows =>rows.Field<DateTime>("date")== cellData) 
       .CopyToDataTable(); 
} 

Я стараюсь, но это дает исключение. Пожалуйста, дайте решение для этого или как использовать по запросу

+2

пожалуйста, обновите ваш пост с подробностями исключения. – vidriduch

+1

Какое исключение? – Chostakovitch

+0

ИСКЛЮЧЕНИЕ - не может использовать DBNull.Value для ввода 'System.DateTime'. Используйте тип с нулевым значением. – user2792312

ответ

0

Datatable дт может иметь строки, которые имеют нулевые значения для столбца Даты

Использования обнуляемого DateTime при сравнении Даты

dt3 = dt.AsEnumerable() 
       .Where(rows => rows.Field<DateTime?>("date") == cellData) 
       .CopyToDataTable(); 
+0

Танки много. Он работал ...... – user2792312

1

Вы пытаетесь отфильтровать свою таблицу из каждой строки. Это неверно и будет создавать данные для каждой строки.

Если вы хотите, чтобы фильтровать DataTable, вы можете использовать dt.Select() или использовать Linq:

var dateFilter = DateTime.Parse("1/1/2015"); 
var dt3 = dt.AsEnumerable().Where(x => x.Field<DateTime>("date") == dateFilter).CopyToDataTable(); 

Просьба предоставить дополнительные пояснения, если это не совсем то, что вы хотите выполнить.

+0

Я запрашиваю каждую отдельную строку, потому что я создаю таблицу с помощью этой даты, и после выполнения манипуляции я удаляю все строки из dt3, а затем снова для другой даты создаю один и тот же dt3. – user2792312

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