2016-08-26 3 views
-2

Ich bin etwas verwirrt mit C# LINQ-Abfragen. Ich habe eine Tabelle mit Werten wie untenC# Datentabelle Abfrage nicht vorhanden Joins

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); 

nun gezeigt habe ich eine andere Tabelle

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); 

Ich brauche Werte in tableold (Basistabelle) zu halten, die nicht da sind in tableNew (neue Tabelle).

Also muss ich die aktualisierte Datentabelle (tableold) wie folgt aussehen:

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

wie solche Abfrage in C# schreiben oder LinQ

Bitte um Hilfe! dies dank

+0

ich nicht folgen, wie Zugabe von 3 Zeilen Code = 5 Zeilen und wie Sie zwei Zeilen der Ausgabe erwarten .. aber was hast du eigentlich versuchen? Ich rate, dass Sie den tiesm aus der neuesten Tabelle auswählen möchten, und die "Nummern" verwenden, die Sie ausgewählt haben, wählen Sie die entsprechenden Zeilen aus alten .. – BugFinder

+0

ich möchte nicht vorhanden sein Join und entfernen Sie die Zeilen, die in beiden Tabellen identisch sind und ich brauche eine endgültige aktualisierte Tabelle –

+1

Nun, es klingt wirklich nicht wie Sie noch versucht .. zeigen, was Sie versucht haben und wie es nicht funktioniert – BugFinder

Antwort

0

Versuche:

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

Vielen Dank! es löste tatsächlich meine Absicht –