Sólo quiero decirles a todos que lo que más circula en Internet no es necesariamente correcto.
Quiero buscar en Google cómo determinar si dos DataTables son iguales. El método más común que aparece es el siguiente.
código
bool privado ValorEquals(DataTable objA,DataTable objB)
{
si (objA! = nulo && objB! = nulo)
{
si (objA.Rows.Count! = objB.Rows.Count)
{
devolver falso;
}
si (objA.Columns.Count! = objB.Columns.Count)
{
devolver falso;
}
}
DataView dv = nuevo DataView(objB);
claves de cadena = "";
foreach(Columna de datos col en objA.Columns)
{
claves += ","+col.ColumnName;
}
dv.Sort = claves.Substring(1);
foreach (fila DataRow en objA.Rows)
{
si (fila.RowState! = DataRowState.Eliminado)
{
si(dv.Buscar(fila.ItemArray)<0)
{
devolver falso;
}
}
demás
{
devolver falso;
}
}
devolver verdadero;
}
No se puede verificar el origen de este código, pero hay muchos rumores.
No sé si la persona que lo reimprimió verificó la exactitud de este método o si simplemente lo reimprimió.
Este método es realmente incorrecto.
Si dos DataTables tienen el mismo número de filas y columnas, pero la primera fila es la misma y la segunda fila es diferente, el método de comparación anterior seguirá devolviendo Verdadero.
Escribo aquí para decirle a la mayoría de las personas (incluyéndome a mí) que lo que más circula en Internet no es necesariamente correcto. También quiero decirles algo a los veteranos. Por favor, verifiquen la exactitud del contenido al reimprimirlo. Es bueno para mí pase lo que pase, todo es bueno para los demás.
Esta es la primera vez que publico. Si lo que digo está mal, espero que no lo sugiera.
También espero que un experto pueda proporcionar un método correcto y eficiente para comparar si dos DataTables son iguales.
Utilicé un método más antiguo.
código
bool público DataTableTheSame (Tabla de datos1, Tabla de datos2)
{
si (Tabla1 == nulo || Tabla2 == nulo)
{
devolver falso;
}
si (Tabla1.Filas.Recuento! = Tabla2.Filas.Recuento)
{
devolver falso;
}
si (Tabla1.Columnas.Recuento! = Tabla2.Columnas.Recuento)
{
devolver falso;
}
para (int i = 0; i < Table1.Rows.Count; i++)
{
para (int j = 0; j < Tabla1.Columnas.Cuenta; j++)
{
si (Table1.Rows[i][j].ToString() != Table2.Rows[i][j].ToString())
{
devolver falso;
}
}
}
devolver verdadero;
}