I would personnaly use a dictionnary to hold a single line. Something like that:
var row = new Dictionary<string, object>(); for (int i = 0; i < reader.FieldCount; i++) { row[reader.GetName(i)] = reader.GetValue(i); }