我对C#LINQ查询感到困惑。我有一个包含值的表,如下所示
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);
我需要在tableNew(新表)中保存tableold(基表)中的值。
所以我需要更新的数据表(tableold)看起来像这样:
21, "Combivent", "Janet", "10:20:00"
100, "Dilantin", "Melanie", "10:20:00"
如何在c#或LinQ中编写此类查询
请帮忙!感谢
答案 0 :(得分: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();