ดูเหมือนว่าคุณไม่ต้องการเก็บ DataTable ทั้งหมดไว้เป็นสำเนาเพราะคุณต้องการเพียงบางแถวใช่ไหม หากคุณมี creteria คุณสามารถระบุด้วยการเลือกบนตารางคุณสามารถคัดลอกเฉพาะแถวเหล่านั้นไปยังอาร์เรย์สำรองข้อมูลเพิ่มเติมของ DataRow เช่น
DataRow[] rows = sourceTable.Select("searchColumn = value");
ฟังก์ชัน. select () มีหลายตัวเลือกและฟังก์ชันนี้สามารถอ่านเป็น SQL ได้
SELECT * FROM sourceTable WHERE searchColumn = value;
จากนั้นคุณสามารถนำเข้าแถวที่คุณต้องการตามที่อธิบายไว้ข้างต้น
targetTable.ImportRows(rows[n])
... สำหรับ n ที่ถูกต้องที่คุณต้องการ แต่คอลัมน์จะต้องเหมือนกันในแต่ละตาราง
บางสิ่งที่คุณควรทราบเกี่ยวกับ ImportRow ก็คือจะมีข้อผิดพลาดระหว่างรันไทม์เมื่อใช้คีย์หลัก!
ก่อนอื่นฉันต้องการตรวจสอบว่ามีแถวอยู่แล้วหรือไม่ซึ่งล้มเหลวเนื่องจากคีย์หลักหายไป แต่การตรวจสอบก็ล้มเหลวเสมอ ในที่สุดฉันก็ตัดสินใจล้างแถวที่มีอยู่ทั้งหมดและนำเข้าแถวที่ฉันต้องการอีกครั้ง
ประเด็นที่สองช่วยให้เข้าใจสิ่งที่เกิดขึ้น วิธีที่ฉันใช้ฟังก์ชันนำเข้าคือการทำซ้ำแถวด้วยรายการที่แลกเปลี่ยนในคอลัมน์เดียว ฉันตระหนักว่ามันเปลี่ยนแปลงอยู่เสมอและยังคงเป็นการอ้างอิงถึงแถวในอาร์เรย์ ก่อนอื่นฉันต้องนำเข้าต้นฉบับจากนั้นจึงเปลี่ยนรายการที่ฉันต้องการ
การอ้างอิงยังอธิบายข้อผิดพลาดของคีย์หลักที่ปรากฏขึ้นเมื่อฉันพยายามนำเข้าแถวเป็นครั้งแรกเนื่องจากมีการเพิ่มขึ้นเป็นสองเท่า