Quero apenas dizer a todos que o que é mais amplamente divulgado na Internet não é necessariamente correto.
Quero pesquisar no Google como determinar se dois DataTables são iguais. O método mais comum que surge é o seguinte.
código
private bool ValueEquals(DataTable objA,DataTable objB)
{
if (objA! = nulo && objB! = nulo)
{
if (objA.Rows.Count! = objB.Rows.Count)
{
retornar falso;
}
if (objA.Colunas.Count! = objB.Colunas.Count)
{
retornar falso;
}
}
DataView dv = novo DataView(objB);
string chaves = "";
foreach(DataColumn col em objA.Columns)
{
chaves += ","+col.ColumnName;
}
dv.Sort = chaves.Substring(1);
foreach (linha DataRow em objA.Rows)
{
if (row.RowState! = DataRowState.Deleted)
{
if(dv.Find(row.ItemArray)<0)
{
retornar falso;
}
}
outro
{
retornar falso;
}
}
retornar verdadeiro;
}
O criador deste código não pode ser verificado, mas existem muitos rumores.
Não sei se quem reimprimiu verificou a exatidão desse método ou se apenas reimprimiu.
Este método está realmente errado.
Se duas DataTables tiverem o mesmo número de linhas e colunas, mas a primeira linha for igual e a segunda linha for diferente, o método de comparação acima ainda retornará True.
Escrevo aqui para dizer à maioria das pessoas (inclusive eu) que o que mais circula na Internet não é necessariamente correto. Também quero dizer algo aos veteranos. Por favor, verifiquem a exatidão do conteúdo ao reimprimi-lo. é bom para mim, não importa o que aconteça, é tudo bom para os outros.
Esta é minha primeira vez postando. Se o que eu digo estiver errado, espero que você não sugira isso.
Espero também que um especialista possa fornecer um método correto e eficiente para comparar se duas DataTables são iguais.
Eu usei um método mais antiquado
código
public bool DataTableTheSame(DataTable Tabela1, DataTable Tabela2)
{
if (Tabela1 == nulo || Tabela2 == nulo)
{
retornar falso;
}
if (Tabela1.Rows.Count! = Tabela2.Rows.Count)
{
retornar falso;
}
if (Tabela1.Colunas.Count! = Tabela2.Colunas.Count)
{
retornar falso;
}
for (int i = 0; i <Tabela1.Rows.Count; i++)
{
for (int j = 0; j <Tabela1.Colunas.Count; j++)
{
if (Tabela1.Rows[i][j].ToString() != Tabela2.Rows[i][j].ToString())
{
retornar falso;
}
}
}
retornar verdadeiro;
}