如何使用 2D 数组 C# 将结果放入表中
Posted
技术标签:
【中文标题】如何使用 2D 数组 C# 将结果放入表中【英文标题】:How to put results in a table using 2D arrays C# 【发布时间】:2021-12-08 05:31:05 【问题描述】:我正在尝试在类似于下面显示的示例输出的表中输出我的所有值。谁能告诉我如何才能得到这样的东西?
Example Output
string[] salesReps =
"Dave", "Sarah", "Juan", "Gilno",
;
string[] months =
"Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec",
;
int[,] salesStats = new int[4, 12]
67, 34, 23, 54, 34, 12, 34, 2, 3, 4, 5, 6, ,
7, 6, 5, 4, 3, 3, 2, 1, 2, 3, 4, 5, ,
6, 7, 8, 9, 0, 111, 12, 13, 14, 15, 16, 17, ,
87, 6, 5, 4, 34, 67, 87, 54, 34, 5, 6, 7, ,
;
【问题讨论】:
您可能需要先遍历每列中的值,并检查它们的长度,以便正确地间隔所有内容。此外,您可能应该创建一个对象来保存要组合在一起的信息。使用独立数组是自找麻烦。Could anyone tell me how I would go about getting something like this with the code I already have
你能改变你已经拥有的代码吗,如果是这样,我会鼓励你选择不同的方向。
是的,我仍然可以编辑我的代码。
【参考方案1】:
这很好用:
int maxSalesRep = salesReps.Max(x => x.Length);
int maxData = months.Max(x => x.Length);
foreach (var stat in salesStats.Cast<int>())
var text = stat.ToString();
if (text.Length > maxData)
maxData = text.Length;
Console.Write("".PadLeft(maxSalesRep));
Console.Write(" ");
Console.WriteLine(
String.Join(
" ",
months.Select(x => x.PadLeft(maxData))));
for (int i = 0; i < salesReps.Length; i++)
Console.Write(salesReps[i].PadLeft(maxSalesRep));
Console.Write(" ");
Console.WriteLine(
String.Join(
" ",
Enumerable.Range(0, months.Length).Select(j => $"salesStats[i, j]".PadLeft(maxData))));
这给了我:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Dave 67 34 23 54 34 12 34 2 3 4 5 6
Sarah 7 6 5 4 3 3 2 1 2 3 4 5
Juan 6 7 8 9 0 111 12 13 14 15 16 17
Gilno 87 6 5 4 34 67 87 54 34 5 6 7
或者稍微好一点:
IEnumerable<string> lines =
Enumerable
.Range(0, salesReps.Length)
.Select(i => Enumerable.Range(0, months.Length).Select(j => salesStats[i, j].ToString().PadLeft(maxData)).StartWith(salesReps[i].PadLeft(maxSalesRep)))
.StartWith(months.Select(m => m.PadLeft(maxData)).StartWith("".PadLeft(maxSalesRep)))
.Select(x => String.Join(" ", x));
Console.WriteLine(String.Join(Environment.NewLine, lines));
【讨论】:
【参考方案2】:你应该可以用 for 循环来实现它
Console.Write("\t");
for (int i = 0; i< months.Length; i++) //print header
Console.Write(months[i] + "\t");
Console.WriteLine();
for (int i = 0; i < salesReps.Length; i++) //for each sales rep
Console.Write(salesReps[i] + "\t"); //prints name
for (int j = 0; j < salesStats.GetLength(1); j++) //for each month
Console.Write(salesStats[i, j] + "\t"); //prints values
Console.WriteLine();
给你这个:
【讨论】:
以上是关于如何使用 2D 数组 C# 将结果放入表中的主要内容,如果未能解决你的问题,请参考以下文章
Python 中的 Bigquery:如何将查询结果放入表中?