使用 LINQ 将 DataTable 转换为对象 [ , ] 数组
Convert DataTable into object[ , ] array with LINQ
如果之前有人问过这个问题,我深表歉意;也许我只是盲目而没有找到它。是否可以使用 LINQ 将 DataTable 转换为对象 [ , ] 类型的数组?使用下面的代码我可以将它转换成 object[][] 但不幸的是这不是我需要的:
object[][] tableEnumerable = dtReportData.AsEnumerable().Select(x => x.ItemArray).ToArray();
我需要的是:
object [,] = ....?
提前感谢您的帮助,如果重复,我深表歉意post。
编辑:
我不想要 object[][] 作为 posted 解决方案所指的,我需要 object[]。至少先学会看人再减分
您不能使用 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
}
}
如果之前有人问过这个问题,我深表歉意;也许我只是盲目而没有找到它。是否可以使用 LINQ 将 DataTable 转换为对象 [ , ] 类型的数组?使用下面的代码我可以将它转换成 object[][] 但不幸的是这不是我需要的:
object[][] tableEnumerable = dtReportData.AsEnumerable().Select(x => x.ItemArray).ToArray();
我需要的是:
object [,] = ....?
提前感谢您的帮助,如果重复,我深表歉意post。
编辑: 我不想要 object[][] 作为 posted 解决方案所指的,我需要 object[]。至少先学会看人再减分
您不能使用 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
}
}