Как распечатать List как таблицу в консольном приложении?

Мне нужен метод для печати списка в виде таблицы в консольном приложении и предварительного просмотра в удобном формате, например:

Pom_No          Item_Code          ordered_qty                      received_qty

1011            Item_Code1         ordered_qty1                    received_qty1 

1011            Item_Code2         ordered_qty2                    received_qty2

1011            Item_Code3         ordered_qty3                    received_qty3

1012            Item_Code1         ordered_qty1                    received_qty1 

1012            Item_Code2         ordered_qty2                    received_qty2

1012            Item_Code3         ordered_qty3                    received_qty3

Ответы

Ответ 1

Ваш основной инструмент будет

Console.WriteLine("{0,5} {1,10} {2,-10}", s1, s2, s3);  

,5 и ,10 являются спецификаторами ширины. Используйте отрицательное значение для выравнивания по левому краю.

Также возможно форматирование:

Console.WriteLine("y = {0,12:#,##0.00}", y);

Или Дата с шириной 24 и пользовательским форматированием:

String.Format("Now = {0,24:dd HH:mm:ss}", DateTime.Now);

Изменить, для С# 6

С помощью строковой интерполяции вы также можете написать

Console.WriteLine($"{s1,5} {s2,10} {s3,-10}");  
Console.WriteLine($"y = {y,12:#,##0.00}");
String.Format($"Now = {DateTime.Now,24:dd HH:mm:ss}" );

Вам не нужно явно вызывать String.Format():

string s = $"Now = {DateTime.Now,24:dd HH:mm:ss}" + " " + $"y = {y,12:#,##0.00}" ;

Ответ 2

Проще всего это сделать, чтобы использовать существующую библиотеку

Install-Package ConsoleTables 

И тогда вы можете определить свою таблицу следующим образом:

ConsoleTable.From<Order>(orders).Write();

И он даст этот выход

| Id       | Quantity | Name              | Date                |
|----------|----------|-------------------|---------------------|
| 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
| 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
| 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
| 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |
| 3355     | 6        | Some Product 3355 | 18-04-2016 00:52:52 |

Или определить пользовательскую таблицу

var table = new ConsoleTable("one", "two", "three");
table.AddRow(1, 2, 3)
     .AddRow("this line should be longer", "yes it is", "oh");

table.Write();

Для получения дополнительных примеров таблица консоли С#

Ответ 3

Используйте\t для добавления вкладок для разделения столбцов