使用 LINQ 将数据表转换为对象 [ , ] 数组

本文关键字:数组 对象 LINQ 数据表 转换 使用 | 更新日期: 2023-09-27 17:56:58

如果之前有人问过这个问题,我深表歉意;也许我只是瞎了眼,没有找到它。 是否可以使用 LINQ 将 DataTable 转换为对象 [ , ] 类型的数组? 使用以下代码,我可以将其转换为 object[][],但不幸的是,这不是我需要的:

object[][] tableEnumerable = dtReportData.AsEnumerable().Select(x => x.ItemArray).ToArray();

我需要的是:

object [,] = ....?

提前感谢您的任何帮助,如果这是一个重复的帖子,我再次道歉。

编辑:我不想要发布的解决方案所指的对象[][],我需要对象[,]。至少在开始减分之前学会读人。

使用 LINQ 将数据表转换为对象 [ , ] 数组

不能使用 Linq 创建矩形数组 - Linq 只对一维数组进行操作。 您将需要使用传统的for循环:

object[,] objectArray = new object[dtReportData.Rows.Count,
                                   dataTable1.Columns.Count];
for(int row = 0; row < dtReportData.Rows.Count; row++)
{
  for(int col = 0; col < dtReportData.Columns.Count; col++)
  {
    objectArray[row, col] = dtReportData.Rows[row][col];
  }
}

如果您愿意,可以将其作为DataTable的扩展方法,以使语法更清晰:

object[][] tableEnumerable = dtReportData.ToRectangularArray()

扩展方法如下所示:

public static class MyDataTableExtensions
{
   public static object[,] ToRectangularArray(this DataTable dt)
   {
       // code above goes here
   }
}