The overall goal to my project is to gather current emergency incident information from multiple 911 dispatch centers and send that info via a webservice to our server, which will then display a list of emergency incidents for our region. The way I am currently gathering data at each dispatch center is this:

* The dispatch center has some kind of database server running that stores all of the incident information
* I have a query set up in the database that returns all of the current emergency incidents in xml format
* I have a windows service that, every 3 seconds, runs that query (actually a stored procedure), then sends that data (xml) to our webservice
* When our server receives the information, it deletes (from our database, not the dispatch center) all the current incident information and replaces it with the "new" data

The problem with this approach is that we are send tons and tons of redundant data. What I would like to do is only send database rows that have changed since the last time the sproc was run. My thinking is to have my windows service do something like this.. run the sproc and store the results in an array/dictionary of some kind. The next time the sproc is run (3 seconds later) is to compare the new results with the existing array and only pull out the differences and send them... would like to send the data to our webservice as JSON instead of XML... wondering what ideas people have to best accomplish this (not necessarily specific code, but more of an overview...) Using C#...

**EDIT**

After some more investigating, I think what I want is something along the lines of a "Dataset to List" type of process... that would allow me to convert each record to a custom object and then create a list of those objects... that list of objects could then be stored in memory and the next set of data (3 seconds later) could be used to compare to the original list to see if anything changed... The windows service will not necessarily call a SQL Server sproc so this code needs to be made to work with other database servers... It should be noted that the number of records being returned in each dataset will probably only be 10-15 at the most... we're not talking about thousands of records...