public static List2D <object> ToList2D(this DataTable dataTable, bool includeColumnsName = true) { List2D <object> result = new List2D <object>(dataTable.Columns.Count); if (includeColumnsName) { for (int i = 0; i < dataTable.Columns.Count; ++i) { result[i, 0] = dataTable.Columns[i]; } } int offset = includeColumnsName ? 1 : 0; for (int i = 0; i < dataTable.Rows.Count; ++i) { if (offset == 0 && i != 0 || offset == 1) { result.AddLine(); } object[] row = dataTable.Rows[i].ItemArray; for (int j = 0; j < row.Length; ++j) { result[j, i + offset] = row[j]; } } return(result); }
public static List2D <object> ToList2D(this IDataReader dataReader, bool includeColumnsName = true) { using (dataReader) { List2D <object> result = new List2D <object>(dataReader.FieldCount); if (includeColumnsName) { for (int i = 0; i < dataReader.FieldCount; ++i) { result[i, 0] = dataReader.GetName(i); } } int j = includeColumnsName ? 1 : 0; while (dataReader.Read()) { if (j != 0) { result.AddLine(); } for (int i = 0; i < dataReader.FieldCount; ++i) { result[i, j] = dataReader[i]; } j++; } return(result); } }