Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
并排显示DataTable列C#控制台应用程序_C#_Datatable - Fatal编程技术网

并排显示DataTable列C#控制台应用程序

并排显示DataTable列C#控制台应用程序,c#,datatable,C#,Datatable,我对编码完全不熟悉。我觉得我学得很快,然后当然被这个世界上的一切所蒙羞。我目前正试图弄清楚是否可以将DataTable列并排打印,而不是上下打印 以下是我编写的一些代码(正在进行实验,因为我觉得自己已经不知道了): 这种方法看起来像: public void Print() { Queue<Claims> allInQueue = _claimsRepo.GetClaims(); PrintHeaders(); foreach (var claim in a

我对编码完全不熟悉。我觉得我学得很快,然后当然被这个世界上的一切所蒙羞。我目前正试图弄清楚是否可以将DataTable列并排打印,而不是上下打印

以下是我编写的一些代码(正在进行实验,因为我觉得自己已经不知道了):


这种方法看起来像:

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"]
                );
        }
    }