Saya hanya ingin menyampaikan kepada semua orang bahwa apa yang paling banyak beredar di Internet belum tentu benar.
Saya ingin mencari di Google tentang cara menentukan apakah dua DataTables sama. Metode paling umum yang muncul adalah metode berikut.
kode
bool pribadi ValueEquals(objA DataTable,objB DataTable)
{
jika(objA != nol && objB != nol)
{
if(objA.Rows.Count != objB.Rows.Count)
{
kembali salah;
}
if(objA.Kolom.Jumlah != objB.Kolom.Jumlah)
{
kembali salah;
}
}
DataView dv = DataView baru(objB);
kunci string = "";
foreach(Kolom Datakolom di objA.Kolom)
{
kunci += ","+kolom.NamaKolom;
}
dv.Sort = kunci.Substring(1);
foreach(baris DataRow di objA.Rows)
{
if(baris.RowState != DataRowState.Dihapus)
{
if(dv.Find(baris.ItemArray)<0)
{
kembali salah;
}
}
kalau tidak
{
kembali salah;
}
}
kembali benar;
}
Pencetus kode ini tidak dapat diverifikasi, tetapi ada banyak rumor yang beredar.
Saya tidak tahu apakah orang yang mencetak ulang telah memverifikasi kebenaran metode ini, atau dia hanya mencetak ulang.
Cara ini sebenarnya salah.
Jika dua DataTable memiliki jumlah baris dan kolom yang sama, namun baris pertama sama dan baris kedua berbeda, metode perbandingan di atas akan tetap menghasilkan True.
Saya menulis di sini untuk memberi tahu sebagian besar orang (termasuk saya) bahwa apa yang paling banyak beredar di Internet belum tentu benar. Saya juga ingin mengatakan sesuatu kepada para veteran. Harap verifikasi kebenaran konten saat mencetak ulang baik untuk diri saya sendiri apa pun yang terjadi, semuanya baik untuk orang lain.
Ini adalah pertama kalinya saya memposting. Jika apa yang saya katakan salah, saya harap Anda tidak menyarankannya.
Saya juga berharap seorang ahli dapat memberikan metode yang benar dan efisien untuk membandingkan apakah dua DataTable itu sama.
Saya menggunakan metode yang lebih kuno
kode
bool publik DataTableTheSame(DataTable Table1, DataTable Table2)
{
if (Tabel1 == null || Tabel2 == null)
{
kembali salah;
}
if (Tabel1.Baris.Jumlah!= Tabel2.Baris.Jumlah)
{
kembali salah;
}
if (Tabel1.Kolom.Jumlah!= Tabel2.Kolom.Jumlah)
{
kembali salah;
}
untuk (int i = 0; i < Tabel1.Rows.Count; i++)
{
untuk (int j = 0; j < Tabel1.Kolom.Jumlah; j++)
{
if (Tabel1.Baris[i][j].ToString() != Tabel2.Baris[i][j].ToString())
{
kembali salah;
}
}
}
kembali benar;
}