2009-05-06 10 views
1

J'ai deux ensembles de données chacun avec une table de données tirée de différentes sources et j'ai besoin de savoir s'il y a des différences dans les données contenues dans les tableaux de données. J'essaie d'éviter de boucler et de comparer chaque enregistrement ou colonne, même s'il n'y a pas d'autre solution. Tout ce que j'ai besoin de savoir, c'est s'il y a une différence dans les données, je n'ai pas besoin de connaître les détails de toute différence.Comment comparer deux ensembles de données pour l'égalité

J'ai essayé le code ci-dessous, mais il semble que dataset.Merge ne met pas à jour rowstatus donc dataset.HasChanges() renvoie toujours false. Toute aide est appréciée:

var currentDataSet = GetSomeData(); 
var historicalDataSet = GetSomeHistoricalData(); 

historicalDataSet.Merge(currentDataSet); 

if (historicalDataSet.HasChanges()) DoSomeStuff(); 

Répondre

3

Je ne connais aucun support intégré pour cela et je ne m'y attendrais pas non plus. Donc, vous devrez le faire vous-même d'une manière ou d'une autre.

La méthode la plus évidente serait une force brute, table par table et approche rangée par rangée. Si vous pouvez compter sur certains facteurs pour être identiques, c'est-à-dire exactement la même dénomination, l'ordre des enregistrements, etc., vous pouvez tester si l'enregistrement au format XML et la comparaison des résultats peuvent être une astuce efficace.

+0

Oui, c'est le billet. Dans ce cas, le schéma et l'ordre des enregistrements sont garantis, cela fonctionne donc parfaitement. J'aurais dû y penser moi-même! Merci. – JasonS

+0

ça fait 6 ans - je suis sûr que les choses ont changé. Est-il désormais possible de comparer des datarows (et/ou des datables)? Il semble que ce soit un problème assez commun - je souhaite faire la même chose. tout conseil que vous pourriez rendre permettra de sauver d'énormes maux de tête aux futurs utilisateurs. – BKSpurgeon

Questions connexes