Piszę krótki algorytm, który musi porównać dwa zestawy danych, aby różnice między nimi mogły być dalej przetwarzane. Próbowałem osiągnąć ten cel, łącząc te dwa zestawy danych i uzyskać uzyskane zmiany w nowym zestawie danych.pobierz różnice w 2 zestawach danych C#
Moja metoda wygląda następująco:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Wynik foundChanges jest zawsze fałszywe, choć oba zbiory danych mają różne wartości w nim. Oba zestawy danych mają tę samą strukturę. Składają się z trzech tabel danych, które są wynikiem trzech zapytań w bazie danych. Połączenie działa bez problemu.
Moje pytanie brzmi: Czy istnieją jakieś rozsądne wytłumaczenie dlaczego zmienna foundChanges zawsze jest fałszywe, a jeśli nie będzie LINQ zapewnić prawidłowe rozwiązanie tego problemu, czy muszę określić zmiany, iteracja zbiorów danych
Oto kilka dalszych informacji: Język programowania to C# Używam .Net framework 4.0 Pracuję na komputerze z Windows 8 Dane, jak wspomniano, pochodzi z bazy danych (MSSQL Server 2012 express) Moje DataSets lub DataTables przystań Dostałem wszystkie PK, o ile wiem.
Dzięki z góry
Zwykle należy wykonać zestaw danych oldVersion i zmodyfikować go. Następnie oldVersion zawierałaby wszystkie nowe zmiany. Można wtedy wywołać DataSet diff = oldVersion.GetChanges(). –
Może się okazać, że jest to przydatne: http://stackoverflow.com/a/7518025/211627 – JDB