Я просто хочу всем сказать: то, что наиболее широко распространяется в Интернете, не обязательно является правильным.
Я хочу поискать в Google информацию о том, как определить, равны ли две таблицы данных. Наиболее распространенным методом является следующий.
код
частный bool ValueEquals (DataTable objA, DataTable objB)
{
if(objA != null && objB != null)
{
if(objA.Rows.Count != objB.Rows.Count)
{
вернуть ложь;
}
if(objA.Columns.Count != objB.Columns.Count)
{
вернуть ложь;
}
}
DataView dv = новый DataView (objB);
строковые ключи = "";
foreach (столбец DataColumn в objA.Columns)
{
ключи += ","+col.ColumnName;
}
dv.Sort = ключи.Подстрока(1);
foreach (строка DataRow в objA.Rows)
{
if(row.RowState != DataRowState.Deleted)
{
если (dv.Find(row.ItemArray)<0)
{
вернуть ложь;
}
}
еще
{
вернуть ложь;
}
}
вернуть истину;
}
Автора этого фрагмента кода установить невозможно, но слухов ходит много.
Я не знаю, проверил ли корректность этого метода тот, кто его перепечатал, или он просто его перепечатал.
Этот метод на самом деле неправильный.
Если два DataTables имеют одинаковое количество строк и столбцов, но первая строка одинакова, а вторая строка отличается, метод сравнения, описанный выше, все равно вернет значение True.
Я пишу здесь, чтобы сказать большинству людей (включая меня), что то, что больше всего распространяется в Интернете, не обязательно является правильным. Я также хочу кое-что сказать ветеранам, пожалуйста, проверяйте правильность содержания при его перепечатке. хорошо для меня, несмотря ни на что, это хорошо для других.
Это мой первый пост, если то, что я говорю, неверно, надеюсь, вы не предложите это.
Я также надеюсь, что эксперт сможет предложить правильный и эффективный метод сравнения двух таблиц DataTable.
Я использовал более старомодный метод
код
public bool DataTableTheSame (DataTable Table1, DataTable Table2)
{
если (Таблица1 == ноль || Таблица2 == ноль)
{
вернуть ложь;
}
если (Таблица1.Строки.Количество != Таблица2.Строки.Количество)
{
вернуть ложь;
}
если (Таблица1.Столбцы.Количество != Таблица2.Столбцы.Количество)
{
вернуть ложь;
}
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())
{
вернуть ложь;
}
}
}
вернуть истину;
}