【问题标题】:C# create an array with iterationC#用迭代创建一个数组
【发布时间】:2021-04-11 14:45:35
【问题描述】:

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

-- 创建表头和数据

 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","$799.00","$1,598.00"},
     new String[]{"Spire.Office for .NET",".NET Office Component","1","$1,899.00","$1,899.00"},
     new String[]{"Spire.PDF for .NET",".NET PDFComponent","2","$599.00","$1,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) 以在数据声明中使用它。

希望我已经解释清楚,感谢您的帮助。

【问题讨论】:

  • 那不是二维数组,那是锯齿状数组。包含字符串数组的数组。您发布的内容也没有任何迭代代码或任何迭代器。
  • 使用循环或LINQ,最好是后者
  • 这显示了一个使用for 循环迭代锯齿状数组的示例:(geeksforgeeks.org/c-sharp-jagged-arrays)
  • 我认为您想要实现的目标并不明确。您正在获取一个锯齿状数组 (string[][]) arrayFromFunction 并尝试将其复制到一个名为 data 的新 string[][]?另外,Header 是从哪里来的?
  • @connell arrayFromFunction 看起来像 []to me

标签: c# arrays iterator


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    但我不知道如何在 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();
    

    【讨论】:

    • 第二个选项看起来更好更简单,谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2021-10-15
    • 2021-12-06
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    相关资源
    最近更新 更多