Ich möchte nur jedem sagen, dass das, was im Internet am weitesten verbreitet wird, nicht unbedingt richtig ist.
Ich möchte bei Google nach Möglichkeiten suchen, um festzustellen, ob zwei Datentabellen gleich sind. Die am häufigsten angezeigte Methode ist die folgende.
Code
privater bool ValueEquals(DataTable objA,DataTable objB)
{
if(objA != null && objB != null)
{
if(objA.Rows.Count != objB.Rows.Count)
{
return false;
}
if(objA.Columns.Count != objB.Columns.Count)
{
return false;
}
}
DataView dv = new DataView(objB);
string-Tasten = "";
foreach(DataColumn col in objA.Columns)
{
Tasten += ","+col.ColumnName;
}
dv.Sort =keys.Substring(1);
foreach(DataRow-Zeile in objA.Rows)
{
if(row.RowState != DataRowState.Deleted)
{
if(dv.Find(row.ItemArray)<0)
{
return false;
}
}
anders
{
return false;
}
}
return true;
}
Der Urheber dieses Codestücks kann nicht bestätigt werden, es gibt jedoch viele Gerüchte.
Ich weiß nicht, ob die Person, die es nachgedruckt hat, die Richtigkeit dieser Methode überprüft hat oder ob er es nur nachgedruckt hat.
Diese Methode ist eigentlich falsch.
Wenn zwei DataTables die gleiche Anzahl an Zeilen und Spalten haben, die erste Zeile jedoch gleich und die zweite Zeile unterschiedlich ist, gibt die obige Vergleichsmethode immer noch „True“ zurück.
Ich schreibe hier, um der Mehrheit der Menschen (einschließlich mir) mitzuteilen, dass das, was im Internet am häufigsten verbreitet wird, nicht unbedingt korrekt ist. Bitte überprüfen Sie die Richtigkeit des Inhalts, wenn Sie ihn erneut veröffentlichen Es ist gut für mich selbst, egal was passiert, es ist alles gut für andere.
Dies ist mein erster Beitrag. Wenn das, was ich sage, falsch ist, hoffe ich, dass Sie es nicht vorschlagen.
Ich hoffe auch, dass ein Experte eine korrekte und effiziente Methode zum Vergleichen der Gleichheit zweier DataTables bereitstellen kann.
Ich habe eine altmodischere Methode verwendet
Code
public bool DataTableTheSame(DataTable Table1, DataTable Table2)
{
if (Tabelle1 == null || Tabelle2 == null)
{
return false;
}
if (Table1.Rows.Count != Table2.Rows.Count)
{
return false;
}
if (Table1.Columns.Count != Table2.Columns.Count)
{
return false;
}
for (int i = 0; i < Table1.Rows.Count; i++)
{
for (int j = 0; j < Table1.Columns.Count; j++)
{
if (Table1.Rows[i][j].ToString() != Table2.Rows[i][j].ToString())
{
return false;
}
}
}
return true;
}