Tôi đang viết một thuật toán ngắn mà phải so sánh hai DataSets, để sự khác biệt giữa cả hai có thể được xử lý tiếp. Tôi đã cố hoàn thành mục tiêu này bằng cách hợp nhất hai DataSets này và nhận được các thay đổi kết quả thành một Số liệu mới.nhận được sự khác biệt trong 2 DataSets C#
Phương pháp của tôi trông như thế này:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Kết quả của foundChanges luôn là sai, mặc dù hai DataSet có giá trị khác nhau trong đó. Cả hai DataSets đều có cùng một đường cong. Chúng bao gồm ba DataTables là kết quả của ba truy vấn trong một cơ sở dữ liệu. Việc hợp nhất hoạt động tốt không có vấn đề với điều đó.
Câu hỏi của tôi là: Có bất kỳ lời giải thích hợp lý tại sao biến foundChanges luôn là sai và nếu không LINQ sẽ cung cấp một giải pháp thích hợp cho vấn đề này hoặc làm tôi phải xác định những thay đổi bằng cách duyệt qua DataSets
Dưới đây là một số thông tin thêm: Ngôn ngữ lập trình là C# Tôi đang sử dụng .Net framework 4.0 Tôi đang phát triển trên Máy tính WindowsDữ liệu như được đề cập đến từ Cơ sở dữ liệu (MSSQL Server 2012 express) DataSets của tôi hoặc DataTables thiên đường 't có bất kỳ PK của xa như tôi biết.
Cảm ơn trước
Thông thường những gì bạn sẽ làm là lấy tập dữ liệu oldVersion và sửa đổi nó. Sau đó oldVersion sẽ chứa tất cả các thay đổi mới. Sau đó bạn có thể gọi DataSet diff = oldVersion.GetChanges(). –
Bạn có thể thấy điều này hữu ích: http://stackoverflow.com/a/7518025/211627 – JDB