2015-06-17 3 views
0

Я искренне извиняюсь, если это было задано раньше; может быть, я просто слепой и не нахожу его. Можно ли преобразовать DataTable в массив типа [,] типа с помощью LINQ? Используя следующий код, который я могу преобразовать его в объект [] [], но это не то, что мне нужно, к сожалению:Преобразование DataTable в объект [,] массив с LINQ

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

Что мне нужно:

object [,] = ....? 

Спасибо заранее за любую помощь и снова , Прошу прощения, если это дубликат.

EDIT: Я не хочу, чтобы объект [] [], как опубликовал решение имеет значение, мне нужен объект [,]. По крайней мере, научитесь читать людей, прежде чем начинать вычитание очков.

+0

Возможный дубликат [Datatable to Multimimensional Array] (http://stackoverflow.com/questions/8932900/datatable-to-multidimensional-array) –

+0

Правильно, я на самом деле посмотрел на это, но это не даст мне объект [] [] вместо объекта [,] Спасибо за предложение. – Lukas

+0

Linq не может создать прямоугольный массив - вам нужно использовать вложенные петли 'for'. –

ответ

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 
    } 
} 
+0

Так что это невозможно сделать с LINQ, достаточно справедливым. Я буду отмечать это как ответ, так как есть работа вокруг. Спасибо! – Lukas

Смежные вопросы