Ich habe eine Datentabelle, die aus 72 Spalten bestehen wird.Wie vergleiche ich zwei Datentabellen
Ich werde es in der Excel-Tabelle mit VSTO herunterladen, die gut funktioniert.
Nun ändert der Benutzer entweder eine dieser Zeilen oder alle dieser Zeilen und fügt auch eine neue Zeile ein.
Bei der Datentabelle, die zuerst heruntergeladen wurde, handelt es sich um dtA, und bei der Datentabelle, die in der Excel-Tabelle geändert wurde, um dtB.
Ich möchte dtA und dtB vergleichen.
Ich muss alle Zeilen in dtB herausfinden, die nicht in dtA existieren.
Ich kann nicht foreach Schleife für jede einzelne Zeile und bewerten, da es eine sehr unordentliche Art der Codierung ist.
Was ist ein besserer Weg, dies zu tun?
ich so tat,
DataTable dtA = new DataTable();
dtA.Columns.Add("ENo");
dtA.Columns.Add("ENo1");
dtA.Columns.Add("ENo2");
dtA.Columns.Add("ENo3");
dtA.Columns.Add("ENo4");
for (int i = 0; i < 5; i++)
{
DataRow dr = dtA.NewRow();
dr[0] = "Part 0 " + i.ToString();
dr[1] = "Part 1 " + i.ToString();
dr[2] = "Part 2 " + i.ToString();
dr[3] = "Part 3 " + i.ToString();
dr[4] = "Part 4 " + i.ToString();
dtA.Rows.Add(dr);
}
DataTable dtB = new DataTable();
dtB.Columns.Add("ENo");
dtB.Columns.Add("ENo1");
dtB.Columns.Add("ENo2");
dtB.Columns.Add("ENo3");
dtB.Columns.Add("ENo4");
for (int i = 5; i < 10; i++)
{
DataRow dr = dtB.NewRow();
dr[0] = "Part 0 " + i.ToString();
dr[1] = "Part 1 " + i.ToString();
dr[2] = "Part 2 " + i.ToString();
dr[3] = "Part 3 " + i.ToString();
dr[4] = "Part 4 " + i.ToString();
dtB.Rows.Add(dr);
}
Response.Write("\n");
Response.Write("dt A");
Response.Write("\n");
for (int i = 0; i < dtA.Rows.Count; i++)
{
Response.Write(dtA.Rows[i][i].ToString());
Response.Write("\n");
}
Response.Write("\n");
Response.Write("dt B");
Response.Write("\n");
for (int i = 0; i < dtB.Rows.Count; i++)
{
Response.Write(dtB.Rows[i][i].ToString());
Response.Write("\n");
}
var VarA = dtA.AsEnumerable();
var varB = dtA.AsEnumerable();
var diff = VarA.Except(varB);
Response.Write("except");
foreach (var n in diff)
{
Response.Write(n.Table.Rows[0].ToString());
}
Aber ich weiß nicht, was in der foreach var verwenden, Was soll ich pls benutzen?
Danke James für die Antwort, aber das wird nur die neuen Zeilen holen, was ist mit den Zeilen in dtA bekommen geändert – cmrhema
Ihre ursprüngliche Frage nicht angeben, Änderungen zu finden. Da Excel keine Spalte "ON UPDATE CURRENT TIMESTAMP" haben kann, können Sie versuchen, in der Tabelle ein Makro zu erstellen, das sich in das Worksheet_Change-Ereignis einklinkt. Siehe http://www.ozgrid.com/forum/showthread.php?t=63176&page=1 – James