![](/img/trans.png)
[英]C# Dll Import failure: “The application has failed to start because its side-by-side configuration is incorrect”
[英]Displaying DataTable Columns Side-By-Side C# Console Application
我对编码完全陌生。 我觉得我学得很快,然后当然对这个世界上的一切感到谦卑。 我目前正在尝试弄清楚您是否可以并排打印 DataTable Columns 而不是上下打印。
这是我写的一些代码(实验,因为我觉得我不知道了):
private 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;
claimsDT.Rows.Add(idRow);
Console.WriteLine(idRow[0]);
}
Console.WriteLine();
DataRow typeRow;
Console.WriteLine(typeColumn);
foreach (Claims typePrint in allInQueue)
{
typeRow = claimsDT.NewRow();
typeRow["Claim Type"] = typePrint.ClaimType;
claimsDT.Rows.Add(typeRow);
Console.WriteLine(typeRow[1]);
}
Console.WriteLine();
DataRow descriptionRow;
Console.WriteLine(descriptionColumn);
foreach (Claims descriptionPrint in allInQueue)
{
descriptionRow = claimsDT.NewRow();
descriptionRow["Description"] = descriptionPrint.ClaimDescription;
claimsDT.Rows.Add(descriptionRow);
Console.WriteLine(descriptionRow[2]);
}
Console.WriteLine();
DataRow amountRow;
Console.WriteLine(amountColumn);
foreach (Claims amountPrint in allInQueue)
{
amountRow = claimsDT.NewRow();
amountRow["Amount"] = amountPrint.ClaimAmount;
claimsDT.Rows.Add(amountRow);
Console.WriteLine(amountRow[3]);
}
Console.WriteLine();
DataRow dateOfAccidentRow;
Console.WriteLine(accidentColumn);
foreach (Claims dateOfAccidentPrint in allInQueue)
{
dateOfAccidentRow = claimsDT.NewRow();
dateOfAccidentRow["Date of Accident"] = dateOfAccidentPrint.DateOfAccident;
claimsDT.Rows.Add(dateOfAccidentRow);
Console.WriteLine(dateOfAccidentRow[4]);
}
Console.WriteLine();
DataRow dateOfClaimRow;
Console.WriteLine(claimColumn);
foreach (Claims dateOfClaimPrint in allInQueue)
{
dateOfClaimRow = claimsDT.NewRow();
dateOfClaimRow["Date of Claim"] = dateOfClaimPrint.DateOfClaim;
claimsDT.Rows.Add(dateOfClaimRow);
Console.WriteLine(dateOfClaimRow[5]);
}
Console.WriteLine();
DataRow isValidRow;
Console.WriteLine(validColumn);
foreach (Claims isValidPrint in allInQueue)
{
isValidRow = claimsDT.NewRow();
isValidRow["Valid Claim"] = isValidPrint.IsValid;
claimsDT.Rows.Add(isValidRow);
Console.WriteLine(isValidRow[6]);
}
Console.WriteLine();
}
Output:
Komodo Insurance Claims
Claim ID
1
2
Claim Type
Car
Home
Description
Rear bumper hit at traffic light.
Burned down due to unsupervised child.
Amount
3000.00
12000.00
Date of Accident
4/9/2020 12:00:00 AM
3/12/2020 12:00:00 AM
Date of Claim
4/9/2020 12:00:00 AM
4/14/2020 12:00:00 AM
Valid Claim
True
False
Press any key to continue...
我已经修改了您现有的代码,以便它可以并排打印 DataColumns。
此外,您不需要多个for
循环到 map 您的Queue
object 到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
表示分配制表符空间。 您可以使用这些值来正确格式化数据。 有关格式化 output 数据的更多信息,请参阅 Microsoft 复合格式化文档
该方法如下所示:
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();
}
当然,这种印刷是丑陋的。 但这是您应该深入研究的方向。正如本杰明柯林斯在评论中写给您的那样:
一般来说,这是一个耐心并添加一堆 | 的问题。 和 _ 字符并计算空格以使事物看起来很漂亮。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.