2016-08-26 5 views
-2

Я немного смущен запросами C# LINQ. У меня есть таблица со значениями, как показано нижеC# data table query not exist join

DataTable tableold = new DataTable(); 
tableold.Columns.Add("Dosage", typeof(int)); 
tableold.Columns.Add("Drug", typeof(string)); 
tableold.Columns.Add("Patient", typeof(string)); 
tableold.Columns.Add("Date", typeof(DateTime)); 

// Here we add five DataRows. 
tableold.Rows.Add(25, "Indocin", "David", DateTime.Now); 
tableold.Rows.Add(50, "Enebrel", "Sam", DateTime.Now); 
tableold.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now); 
tableold.Rows.Add(21, "Combivent", "Janet", DateTime.Now); 
tableold.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now); 

Теперь у меня есть еще одна таблица

DataTable tableNew = new DataTable(); 
tableNew.Columns.Add("Dosage", typeof(int)); 

// Here we add five DataRows. 
tableNew.Rows.Add(25); 
tableNew.Rows.Add(50); 
tableNew.Rows.Add(10); 

мне нужно держать значения в tableold (базовую таблицу), которые не существуют в tableNew (новую таблицу).

Поэтому мне нужно обновленное таблицу данных (tableold), чтобы выглядеть следующим образом:

21, "Combivent", "Janet", "10:20:00" 
100, "Dilantin", "Melanie", "10:20:00" 

как написать такой запрос в C# или LinQ

Пожалуйста, помогите! спасибо

+0

Я не следовать, как добавление 3 строк в коде = 5 строк, и как вы ожидаете, 2 строки вывода .. однако, что вы на самом деле попробовать? Я предполагаю, что вы хотите выбрать привязки из новой таблицы, и используя выбранные вами цифры, выберите соответствующие строки из старых. – BugFinder

+0

Я хочу, чтобы не существовать, присоединяй и удалите те линии, которые одинаковы в обеих таблицах и мне нужна окончательная обновленная таблица. –

+1

Ну, это действительно звучит не так, как будто вы пробовали еще .. показать, что вы пробовали и как это не сработало – BugFinder

ответ

0

Попробуйте это:

var compare= tableold.AsEnumerable().Select(r => r.Field<int>("Dosage")) 
     .Except(tableNew.AsEnumerable().Select(r => r.Field<int>("Dosage"))); 
DataTable tblResult= (from row in tableold.AsEnumerable() 
           join id in compare 
           on row.Field<int>("Dosage") equals id 
           select row).CopyToDataTable(); 
+0

Спасибо! это действительно решило мою цель –