Я изменил ваш существующий код, чтобы он мог печатать столбцы данных рядом друг с другом.
Кроме того, вам не нужно несколько циклов for
для сопоставления вашего объекта Queue
с DataRow
. Для получения дополнительной информации обратитесь к приведенному ниже коду:
private static void DataClaimsTable()
{
Console.Clear();
Queue<Claims> allInQueue = _claimsRepo.GetClaims();
DataTable claimsDT = new DataTable("Komodo Insurance Claims");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(String.Format("{0," + ((Console.WindowWidth / 2) + (claimsDT.TableName.Length / 2)) + "}", claimsDT));
Console.ResetColor();
DataColumn idColumn = new DataColumn("Claim ID", typeof(int));
DataColumn typeColumn = new DataColumn("Claim Type", typeof(Enum));
DataColumn descriptionColumn = new DataColumn("Description", typeof(string));
DataColumn amountColumn = new DataColumn("Amount", typeof(decimal));
DataColumn accidentColumn = new DataColumn("Date of Accident", typeof(DateTime));
DataColumn claimColumn = new DataColumn("Date of Claim", typeof(DateTime));
DataColumn validColumn = new DataColumn("Valid Claim", typeof(bool));
claimsDT.Columns.Add(idColumn);
claimsDT.Columns.Add(typeColumn);
claimsDT.Columns.Add(descriptionColumn);
claimsDT.Columns.Add(amountColumn);
claimsDT.Columns.Add(accidentColumn);
claimsDT.Columns.Add(claimColumn);
claimsDT.Columns.Add(validColumn);
DataRow idRow;
Console.WriteLine(idColumn);
foreach (Claims idPrint in allInQueue)
{
idRow = claimsDT.NewRow();
idRow["Claim ID"] = idPrint.ClaimID;
idRow["Claim Type"] = idPrint.ClaimType;
idRow["Description"] = idPrint.ClaimDescription;
idRow["Amount"] = idPrint.ClaimAmount;
idRow["Date of Accident"] = idPrint.DateOfAccident;
idRow["Date of Claim"] = idPrint.DateOfClaim;
idRow["Valid Claim"] = idPrint.IsValid;
claimsDT.Rows.Add(idRow);
}
PrintDataTable(claimsDT);
Console.WriteLine();
}
private static void PrintDataTable(DataTable table)
{
Console.WriteLine("{0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}",
"Claim ID",
"Claim Type",
"Description",
"Amount",
"Date of Accident",
"Date of Claim",
"Valid Claim"
);
foreach (DataRow row in table.Rows)
{
Console.WriteLine("{0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}",
row["Claim ID"],
row["Claim Type"],
row["Description"],
row["Amount"],
row["Date of Accident"],
row["Date of Claim"],
row["Valid Claim"]
);
}
}
Метод PrintDataTable
напечатает вашу таблицу данных в табличном формате. В этом случае строка правильно отформатирована с {0,10}
, где 10 указывает количество мест для выделения и \t
для выделения места табуляции. Вы можете поиграться с этими значениями, чтобы правильно отформатировать данные. Для получения дополнительной информации о форматировании выходных данных см. Документ Microsoft для Composite-Formatting
Ниже приведен пример вывода: