【问题标题】:I'm trying to populate a multidimensional array from a datatable with no success我正在尝试从数据表中填充多维数组但没有成功
【发布时间】:2017-09-27 21:38:43
【问题描述】:

我正在尝试将数据添加到多维数组,但不断收到错误消息:“无法将类型 'Object[][]' 隐式转换为 'string[,]'”。不知道如何解决这个问题。我在 SO 上找到了这个,但他们的解决方案对我没有帮助:Datatable to Multidimensional Array

任何帮助将不胜感激。

clDataTable = i_dbExec.ExecSelect(i_strQuery);
var tableEnumerable = clDataTable.AsEnumerable().Select(row => 
row.ItemArray).ToArray();
string[,] o_astrLocationCodes = tableEnumerable.ToArray(); <-- Error here

【问题讨论】:

  • 为什么不使用var o_astrLocationCodes 并对其进行迭代?
  • 1. tableEnumerable 应该已经是 Array - 在初始化它的表达式上有 ToArray()。 2. 多维数组除了在某些特定(通常是数学)情况下没有用处 - 为什么你认为它比你已经拥有的 object[][] Array 更可取? 3. 显然.ItemArray 的类型是object[],所以它不会转换为string[],除非你转换每个元素。
  • Op,进一步扩展您要完成的工作。可能有更好的方法可以采取。但是,你可以做你想做的事,不管它看起来多么不合适。

标签: c# asp.net linq multidimensional-array


【解决方案1】:

这很丑,我不知道你为什么会这样做,但我不判断。

string[][] stringArray = 
    clDataTable.AsEnumerable()
    .Select(
        row => row.ItemArray
        .Select(
            i=>i.ToString()
        ).ToArray()
    ).ToArray();

【讨论】:

    【解决方案2】:

    感谢@Cory 和@NetMage 的回答。我认为我被限制为提供具有多维数组的现有函数(不允许我编辑),因此我提出了问题。但是,我设法找到了另一个不需要阵列的解决方法。我会将 Cory 的回答标记为一个解决方案,因为尽管他有所保留,但我本可以使用它...... :)

    【讨论】:

      猜你喜欢
      • 2022-01-11
      • 2021-11-10
      • 2011-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-27
      • 2019-09-27
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多