并排显示DataTable列C#控制台应用程序
我对编码完全不熟悉。我觉得我学得很快,然后当然被这个世界上的一切所蒙羞。我目前正试图弄清楚是否可以将DataTable列并排打印,而不是上下打印 以下是我编写的一些代码(正在进行实验,因为我觉得自己已经不知道了):并排显示DataTable列C#控制台应用程序,c#,datatable,C#,Datatable,我对编码完全不熟悉。我觉得我学得很快,然后当然被这个世界上的一切所蒙羞。我目前正试图弄清楚是否可以将DataTable列并排打印,而不是上下打印 以下是我编写的一些代码(正在进行实验,因为我觉得自己已经不知道了): 这种方法看起来像: public void Print() { Queue<Claims> allInQueue = _claimsRepo.GetClaims(); PrintHeaders(); foreach (var claim in a
这种方法看起来像:
public void Print()
{
Queue<Claims> allInQueue = _claimsRepo.GetClaims();
PrintHeaders();
foreach (var claim in allInQueue)
{
PrintRow(claim);
}
}
private void PrintHeaders()
{
Console.Write("Claim ID"); // or you can use nameof(Claim.ClaimID)
Console.Write(" ");
Console.Write("Claim Type"); // or you can use nameof(Claim.ClaimType)
Console.Write(" ");
Console.Write("Description"); // or you can use nameof(Claim.ClaimDescription)
Console.Write(" ");
Console.Write("Amount"); // or you can use nameof(Claim.ClaimAmount)
Console.Write(" ");
Console.Write("Date of Accident"); // or you can use nameof(Claim.DateOfAccident)
Console.Write(" ");
Console.Write("Date of Claim"); // or you can use nameof(Claim.DateOfClaim)
Console.Write(" ");
Console.Write("Valid Claim"); // or you can use nameof(Claim.IsValid)
Console.WriteLine();
}
private void PrintRow(Claims claim)
{
Console.Write(Claim.ClaimID);
Console.Write(" ");
Console.Write(Claim.ClaimType);
Console.Write(" ");
Console.Write(Claim.ClaimDescription);
Console.Write(" ");
Console.Write(Claim.ClaimAmount);
Console.Write(" ");
Console.Write(Claim.DateOfAccident);
Console.Write(" ");
Console.Write(Claim.DateOfClaim);
Console.Write(" ");
Console.Write(Claim.IsValid);
Console.Write(" ");
Console.WriteLine();
}
public void Print()
{
队列allInQueue=\u claimsRepo.GetClaims();
打印头();
foreach(allInQueue中的var索赔)
{
PrintRow(索赔);
}
}
私有void打印头()
{
Console.Write(“Claim ID”);//或者您可以使用nameof(Claim.ClaimID)
控制台。写(“”);
Console.Write(“Claim Type”);//或者您可以使用nameof(Claim.ClaimType)
控制台。写(“”);
Console.Write(“Description”);//或者您可以使用nameof(Claim.claimsdescription)
控制台。写(“”);
Console.Write(“Amount”);//或者您可以使用nameof(Claim.claimermount)
控制台。写(“”);
Console.Write(“事故日期”);//或者您可以使用nameof(Claim.dateofaccient)
控制台。写(“”);
Console.Write(“索赔日期”);//或者您可以使用nameof(Claim.DateOfClaim)
控制台。写(“”);
Console.Write(“Valid Claim”);//或者您可以使用nameof(Claim.IsValid)
Console.WriteLine();
}
private void PrintRow(索赔)
{
Console.Write(Claim.ClaimID);
控制台。写(“”);
Console.Write(Claim.ClaimType);
控制台。写(“”);
控制台。写入(索赔。索赔说明);
控制台。写(“”);
控制台。写入(索赔。索赔安装);
控制台。写(“”);
控制台。写入(索赔。发生日期);
控制台。写(“”);
控制台写入(索赔日期);
控制台。写(“”);
Console.Write(Claim.IsValid);
控制台。写(“”);
Console.WriteLine();
}
当然,这种印刷方式很难看。但这是一个你应该深入研究的方向。
本杰明·柯林斯在评论中写道:
一般来说,这是一个耐心的问题,需要添加一堆|和|字符,并计算出空格以使事情看起来漂亮
我已经修改了您现有的代码,以便它可以将数据列并排打印 此外,将
队列
对象映射到数据行
的循环不需要多个。有关更多信息,请参阅以下代码:
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"]
);
}
}
private static void DataClaimsTable()
{
Console.Clear();
队列allInQueue=\u claimsRepo.GetClaims();
DataTable claimsDT=新的DataTable(“Komodo保险索赔”);
Console.ForegroundColor=ConsoleColor.Green;
WriteLine(String.Format(“{0,”+((Console.WindowWidth/2)+(claimsDT.TableName.Length/2))+“}”,claimsDT));
Console.ResetColor();
DataColumn idColumn=新的DataColumn(“索赔ID”,类型(int));
DataColumn typeColumn=新的DataColumn(“索赔类型”,typeof(枚举));
DataColumn descriptionColumn=新的DataColumn(“描述”,类型(字符串));
DataColumn amountColumn=新的DataColumn(“金额”,类型(十进制));
DataColumn accidentColumn=新的DataColumn(“事故日期”,类型(日期时间));
DataColumn claimColumn=新的DataColumn(“索赔日期”,typeof(DateTime));
DataColumn validColumn=新的DataColumn(“有效索赔”,类型为(bool));
claimsDT.Columns.Add(idColumn);
claimsDT.Columns.Add(typeColumn);
claimsDT.Columns.Add(descriptionColumn);
claimsDT.Columns.Add(amountColumn);
claimsDT.Columns.Add(意外列);
claimsDT.Columns.Add(claimColumn);
claimsDT.Columns.Add(validColumn);
数据行idRow;
Console.WriteLine(idColumn);
foreach(索赔idPrint在allInQueue中)
{
idRow=claimsDT.NewRow();
idRow[“索赔ID”]=idPrint.ClaimID;
idRow[“索赔类型”]=idPrint.ClaimType;
idRow[“Description”]=idPrint.claimsdescription;
idRow[“金额”]=idPrint.MOUNT;
idRow[“事故日期”]=idPrint.Dateofacident;
idRow[“索赔日期”]=idPrint.DateOfClaim;
idRow[“有效索赔”]=idPrint.IsValid;
claimsDT.Rows.Add(idRow);
}
PrintDataTable(claimsDT);
Console.WriteLine();
}
私有静态void PrintDataTable(DataTable表)
{
Console.WriteLine({0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}),
“索赔ID”,
“索赔类型”,
“说明”,
“金额”,
“事故发生日期”,
“索赔日期”,
“有效索赔”
);
foreach(table.Rows中的DataRow行)
{
Console.WriteLine({0,10}\t{1,10}\t{2,10}\t{3,10}\t{4,25}\t{5,25}\t{6,10}),
行[“索赔ID”],
行[“索赔类型”],
行[“说明”],
第[“金额”]行,
第[“事故日期”]行,
第[“索赔日期”]行,
第[“有效索赔”]
);
}
}
PrintDataTable
方法将以表格格式打印数据表。在这种情况下,字符串的格式正确地为{0,10}
,其中10表示要分配的空间数,而\t
表示分配选项卡空间。您可以使用这些值来正确格式化数据。有关格式化输出数据的详细信息,请参阅Microsoft文档以获取详细信息
以下是示例输出:
是否仅以SQL表格样式打印索赔?如果是,则不需要DataTable、DataColumn和DataRow类,只需在控制台中打印结果即可。在第一行中,可以逐个打印Claim类的属性名称(请参见nameof expression)。它们是列标题。终止线路。然后,可以在allInQueue中逐个打印每个索赔的值,以便打印索赔属性名称。逐字印刷
public void Print()
{
Queue<Claims> allInQueue = _claimsRepo.GetClaims();
PrintHeaders();
foreach (var claim in allInQueue)
{
PrintRow(claim);
}
}
private void PrintHeaders()
{
Console.Write("Claim ID"); // or you can use nameof(Claim.ClaimID)
Console.Write(" ");
Console.Write("Claim Type"); // or you can use nameof(Claim.ClaimType)
Console.Write(" ");
Console.Write("Description"); // or you can use nameof(Claim.ClaimDescription)
Console.Write(" ");
Console.Write("Amount"); // or you can use nameof(Claim.ClaimAmount)
Console.Write(" ");
Console.Write("Date of Accident"); // or you can use nameof(Claim.DateOfAccident)
Console.Write(" ");
Console.Write("Date of Claim"); // or you can use nameof(Claim.DateOfClaim)
Console.Write(" ");
Console.Write("Valid Claim"); // or you can use nameof(Claim.IsValid)
Console.WriteLine();
}
private void PrintRow(Claims claim)
{
Console.Write(Claim.ClaimID);
Console.Write(" ");
Console.Write(Claim.ClaimType);
Console.Write(" ");
Console.Write(Claim.ClaimDescription);
Console.Write(" ");
Console.Write(Claim.ClaimAmount);
Console.Write(" ");
Console.Write(Claim.DateOfAccident);
Console.Write(" ");
Console.Write(Claim.DateOfClaim);
Console.Write(" ");
Console.Write(Claim.IsValid);
Console.Write(" ");
Console.WriteLine();
}
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"]
);
}
}