ฉันแค่อยากจะบอกทุกคนว่าสิ่งที่แพร่หลายบนอินเทอร์เน็ตนั้นไม่จำเป็นต้องถูกต้องเสมอไป
ฉันต้องการค้นหา Google เกี่ยวกับวิธีการตรวจสอบว่า DataTable สองรายการเท่ากันหรือไม่ วิธีการที่พบบ่อยที่สุดที่เกิดขึ้นคือวิธีการต่อไปนี้
รหัส
บูลส่วนตัว ValueEquals (DataTable objA, DataTable objB)
-
ถ้า(objA != null && objB != null)
-
ถ้า(objA.Rows.Count != objB.Rows.Count)
-
กลับเท็จ;
-
ถ้า(objA.Columns.Count != objB.Columns.Count)
-
กลับเท็จ;
-
-
DataView dv = DataView ใหม่ (objB);
สตริงคีย์ = "";
foreach (คอลัมน์ DataColumn ใน objA.Columns)
-
คีย์ += ","+col.ColumnName;
-
dv.Sort = คีย์.สตริงย่อย(1);
foreach (แถว DataRow ใน objA.Rows)
-
ถ้า (row.RowState ! = DataRowState.Deleted)
-
ถ้า(dv.Find(row.ItemArray)<0)
-
กลับเท็จ;
-
-
อื่น
-
กลับเท็จ;
-
-
กลับเป็นจริง;
-
ไม่สามารถตรวจสอบผู้สร้างรหัสชิ้นนี้ได้ แต่มีข่าวลือมากมาย
ฉันไม่รู้ว่าคนที่พิมพ์ซ้ำได้ตรวจสอบความถูกต้องของวิธีนี้แล้วหรือว่าเขาเพิ่งพิมพ์ซ้ำ
วิธีการนี้ผิดจริงๆ
ถ้าสอง DataTables มีจำนวนแถวและคอลัมน์เท่ากัน แต่แถวแรกเท่ากันและแถวที่สองต่างกัน วิธีการเปรียบเทียบข้างต้นจะยังคงส่งกลับค่า True
ฉันเขียนที่นี่เพื่อบอกคนส่วนใหญ่ (รวมถึงฉันด้วย) ว่าสิ่งที่เผยแพร่บนอินเทอร์เน็ตส่วนใหญ่นั้นไม่ถูกต้องเสมอไป ฉันอยากจะพูดอะไรกับทหารผ่านศึกด้วย โปรดตรวจสอบความถูกต้องของเนื้อหาเมื่อพิมพ์ซ้ำ ดีต่อตัวเองไม่ว่าอะไรก็ตาม มันก็ดีสำหรับผู้อื่น
นี่เป็นครั้งแรกที่ฉันโพสต์ หากสิ่งที่ฉันพูดผิดฉันหวังว่าคุณจะไม่แนะนำ
ฉันยังหวังว่าผู้เชี่ยวชาญจะสามารถให้วิธีการที่ถูกต้องและมีประสิทธิภาพเพื่อเปรียบเทียบว่า DataTable สองรายการเท่ากันหรือไม่
ฉันใช้วิธีการแบบเก่ากว่า
รหัส
บูลสาธารณะ DataTableTheSame (DataTable Table1, DataTable Table2)
-
ถ้า (Table1 == null || Table2 == null)
-
กลับเท็จ;
-
ถ้า (Table1.Rows.Count != Table2.Rows.Count)
-
กลับเท็จ;
-
ถ้า (Table1.Columns.Count != Table2.Columns.Count)
-
กลับเท็จ;
-
สำหรับ (int i = 0; i < Table1.Rows.Count; i++)
-
สำหรับ (int j = 0; j < Table1.Columns.Count; j++)
-
ถ้า (Table1.Rows[i][j].ToString() != Table2.Rows[i][j].ToString())
-
กลับเท็จ;
-
-
-
กลับเป็นจริง;
-