GetSchemaTable вернет много информации о столбцах, включая их имя, а также размер, тип и т. Д.
Я предполагаю, что вы хотите, чтобы ключом словаря было имя столбца, а значением было значение строки. Если так, это должно работать:
var dict = reader.GetSchemaTable().Rows.OfType<DataRow>().Select(
r => r["ColumnName"].ToString()
).ToDictionary(
cn => cn,
cn => reader[cn].ToString()
);
Вы также можете использовать GetValues () , чтобы получить количество столбцов, и вызвать GetName (int) для каждого.