This has been set aside for now, being replaced by memory mapped files.
Temporary memory-saving solution until C# 2.0 is officially released. Since an object takes up too much space, DataSet and Score will inherit from a double-typed DataContainer and InformationSet will be removed from the DataContainer inheritance heirarchy.
DataContainer
Change from column-major format to row-major format
This will make removing rows less expensive since that operation is performed for often
Change rows to double[] (from ArrayList)
Change column names to static array
Add resize/initialize functionality
Update NumCols property
Update Get/SetDataObject
Update Add/RemoveColumn
Resize when needed
Shift empty columns
Update RemoveColumns
Shift empty columns
Update Add/RemoveRow
Change Filter to return a new DataContainer
Row-major format will enable the copying of entire rows so filtering will be faster this way
Update Merge/Append
Update Trim
Remove all unused columns
Add a call to Trim() after operations Load, Merge, Append
DataSet
Update Load & Save
Update Get/SetDataPoint
Update Merge/Append
Score
Update GenerateScores
Resize to the number of columns needed
Update Load & Save
Update Standardize
InformationSet
Refactor into a new class that is not a DataContainer
Form1
Initialize Scores for the total number of columns needed first