Sto scrivendo un breve algoritmo che deve confrontare due DataSet, in modo che le differenze tra entrambi possano essere ulteriormente elaborate. Ho provato a raggiungere questo obiettivo unendo questi due DataSet e ottenere le modifiche risultanti in un nuovo DataSet.ottenere le differenze in 2 DataSet C#
Il mio metodo è simile al seguente:
private DataSet ComputateDiff(DataSet newVersion, DataSet oldVersion)
{
DataSet diff = null;
oldVersion.Merge(newVersion);
bool foundChanges = oldVersion.HasChanges();
if (foundChanges)
{
diff = oldVersion.GetChanges();
}
return diff;
}
Il risultato di foundChanges è sempre falso, anche se i due set di dati hanno valori diversi in esso. Entrambi i set di dati hanno la stessa trama. Consistono in tre DataTable che sono il risultato di tre query in un database. L'unione funziona correttamente senza problemi.
La mia domanda è: C'è qualche spiegazione ragionevole motivo per cui la variabile foundChanges è sempre false e se non Linq fornire una soluzione adeguata a questo problema o devo per determinare i cambiamenti scorrendo i dataset
Ecco alcune ulteriori informazioni: Il linguaggio di programmazione è C# Sto usando .Net framework 4.0 Sto sviluppando su una macchina Windows 8 I dati come menzionati provengono da un database (MSSQL Server 2012 express) My DataSets o DataTables rifugio Ho qualche PK per quanto ne so.
Grazie in anticipo
In genere ciò che si dovrebbe fare è prendere un dataset oldVersion e modificarlo. Allora oldVersion conterrà tutte le nuove modifiche. È quindi possibile chiamare DataSet diff = oldVersion.GetChanges(). –
Potresti trovare questo utile: http://stackoverflow.com/a/7518025/211627 – JDB