2015-03-14 1 views
0

Je suis en train de convertir une des lignes de DataTable dans un tableau multidimensionnel:Convertir un tableau multidimensionnel DataTable à C#

DataTable DT = new DataTable(); 
DT.Columns.AddRange 
(
    new DataColumn[] 
    { 
      new DataColumn("LA_ID"), 
      new DataColumn("contractid") 
    } 
); 

for(int i=1000; i<=1100; i++) 
    DT.Rows.Add(i, i); 

EnumerableRowCollection<DataRow> appsEnum = DT.AsEnumerable(); 

int[,] apps = appsEnum. 
       Where(x => x.Field<int>("LA_ID") > 1050). 
       Select(x => x.Field<int>("LA_ID"), x.Field<int>("contractid")). 
--Error Here-------------------------------------^ 
       ToArray(); 

Quelqu'un peut-il aider plz.

enter image description here

+0

Quel type d'erreur? – Jite

+0

compiler le temps c'est à cause de la question de la syntaxe, je crois. – yogi

+0

Est-ce qu'il lance une exception? Poster l'exception Est-ce que la propriété 'LA_ID' existe? – Jite

Répondre

2

Il n'y a pas de version de .ToArray() qui prend en charge plus de 1 dimension. Vous aurez besoin d'un for-loop ici.

Il pourrait probablement travailler avec un int[][] mais pas pour int[,]

+0

Cela fonctionne absolument avec int [] [] mais pas pour int [,] –

1

le mieux que vous pouvez obtenir avec la méthode ToArray() est un tableau en dents de scie

int [][] apps = appsEnum. 
      Where(x => x.Field<int>("laid") > 1050). 
      Select(x => new int[] {x.Field<int>("LA_ID"), x.Field<int>("contractid")}). 
      ToArray(); 

envisager une autre approche

DataRow[] rows = DT.Select("laid > 1050"); 

int[,] apps = new int[rows.Length, 2]; 

for(int r=0; r<rows.Length; r++) 
{ 
    apps[r,0] = rows[r].Field<int>("LA_ID"); 
    apps[r,1] = rows[r].Field<int>("contractid"); 
}