public static void ToConsole(this DbDataReader reader, int maxRow = 0) { while (reader.HasRows) { DataTable schemaTable = reader.GetSchemaTable(); var schema = schemaTable .AsEnumerable() .Select(row => new { Name = row.Field <string>("ColumnName"), Size = row.Field <int>("ColumnSize"), Type = row.Field <Type>("DataType") }); string[] headers = schema.Select(row => row.Name).ToArray(); var D = new OutputDataLine(cout.TrimWriteLine, headers.Length); D.MeasureWidth(schema.Select(row => row.Size).ToArray()); D.MeasureWidth(headers); D.MeasureWidth(schema.Select(row => row.Type).ToArray()); D.DisplayLine(); D.DisplayLine(headers); D.DisplayLine(); if (!reader.HasRows) { cout.WriteLine("<0 row>"); return; } object[] values = new object[headers.Length]; int count = 0; bool limited = false; while (reader.Read()) { reader.GetValues(values); D.DisplayLine(values); if (++count == maxRow) { limited = true; break; } } D.DisplayLine(); cout.WriteLine("<{0} row{1}> {2}", count, count > 1 ? "s" : "", limited ? "limit reached" : "" ); reader.NextResult(); } }
private void ToHorizontalGrid() { line.MeasureWidth(headers); foreach (DataRow row in dt.Rows) { line.MeasureWidth(row.ItemArray); } line.DisplayLine(); line.DisplayLine(headers); line.DisplayLine(); if (dt.Rows.Count == 0) { return; } foreach (DataRow row in dt.Rows) { line.DisplayLine(row.ItemArray); } line.DisplayLine(); }