public static Dictionary2D <string, int, object> ToDictionary2D(this DataTable dataTable) { IList <string> columnsName = new List <string>(); for (int i = 0; i < dataTable.Columns.Count; ++i) { columnsName.Add(dataTable.Columns[i].ColumnName); } Dictionary2D <string, int, object> result = new Dictionary2D <string, int, object>(columnsName); for (int i = 0; i < dataTable.Rows.Count; ++i) { result.AddLine(i + 1); object[] row = dataTable.Rows[i].ItemArray; for (int j = 0; j < row.Length; ++j) { result[j, i] = row[j]; } } return(result); }
public static Dictionary2D <string, int, object> ToDictionary2D(this IDataReader dataReader) { using (dataReader) { IList <string> columnsName = new List <string>(); for (int i = 0; i < dataReader.FieldCount; ++i) { columnsName.Add(dataReader.GetName(i)); } Dictionary2D <string, int, object> result = new Dictionary2D <string, int, object>(columnsName); int j = 1; while (dataReader.Read()) { result.AddLine(j); foreach (string columnName in columnsName) { result[columnName, j] = dataReader[columnName]; } ++j; } return(result); } }