C#用迭代创建一个数组

问题描述

我需要像这样创建一个新的二维字符串数组:

-- 创建标题和数据

 String[] Header ={"Item","Description","Qty","Unit Price","Price"};

 String[][] data = {
     new String[]{"Spire.Doc for .NET",".NET Word Component","1","$799.00","$799.00"},new String[]{"Spire.XLS for .NET",".NET Excel Component","2","$1,598.00"},new String[]{"Spire.Office for .NET",".NET Office Component",899.00",899.00"},new String[]{"Spire.PDF for .NET",".NET PDFComponent","$599.00",198.00"},};

但是代码上声明了“数据”,问题是我需要用未知长度数组[n]的数据(抱歉多次重复“数据”)来声明“数据”,因此代码可以像这样工作:

 String[][] data = {
     new String[]{"arrayFromFunction[0].data1","arrayFromFunction[0].data2","arrayFromFunction[0].data3","arrayFromFunction[0].data4","arrayFromFunction[0].data5"},new String[]{"arrayFromFunction[1].data1","arrayFromFunction[1].data2","arrayFromFunction[1].data3","arrayFromFunction[1].data4","arrayFromFunction[1].data5"},...
     new String[]{"arrayFromFunction[n].data1","arrayFromFunction[n].data2","arrayFromFunction[n].data3","arrayFromFunction[n].data4","arrayFromFunction[n].data5"}
};

但我不知道如何迭代INSIDE String[][] 数据的声明或如何保存迭代器 (n) 以在数据声明中使用它。

希望我已经解释得很好,感谢您的帮助。

解决方法

所以您在某处拥有结构化数据并且想要对其进行解构?这违背了任何将结构化数据绑定到视图并让框架处理其余部分的现代编程原则。

也就是说,实现起来相对简单:

var data = arrayFromFunction.Select(w => new[] { w.data1,w.data2,w.data3,w.data4,w.data5 }).ToArray();
,

但我不知道如何在 String[][] 数据的声明中迭代或如何保存迭代器 (n) 以在数据声明中使用它。

你没有;这是您在此处编写的编译时代码块。当您点击“构建”时,它一直很难融入您的程序,无法处理您的 arrayFromFunction 具有可变数量的元素

嗯..

我想你可以写一个程序generates and compiles C# on the fly

但它似乎比使用例如 List<string> 并循环遍历 arrayFromFunction 数组并将项目添加到列表中更复杂:

foreach(var item in arrayFromFunction)
  someList.Add(new []{ item.data1,item.data2 ... });

或编写 LINQ 语句将 arrayFromFunction 投影到可枚举的字符串数组

var someList = arrayFromFunction.Select(item => new []{ item.data1,item.data2 ... }).ToList();