使用LINQ将DataTable转换为object [,]数组

时间:2015-06-17 16:39:27

标签: c# linq datatable

如果之前有人问过,我真诚地道歉;也许我只是失明而没有找到它。是否可以使用LINQ将DataTable转换为对象[,]类型数组?使用以下代码我可以将其转换为object [] []但不幸的是,这不是我需要的:

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

我需要的是:

object [,] = ....?

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

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

1 个答案:

答案 0 :(得分:3)

您无法使用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
   }
}