The heavy memory hitters for a DataSet are the DataRow object needed for each row in the DataTable and the index that is automatically generated for each column. Storing column values is efficient; you cannot improve it. Replacing this with a collection of shared collections will eliminate DataRows, which can be a gross 50% savings if there are not many columns in the DataTable.
Indexes are what you need to worry about. They make queries in the DataSet very quickly, you will lose this if you do not provide some kind of custom substitute. If you need to provide a replacement, it is impossible to say, it depends on the type of requests that you run.
source
share