LINQ

2010-04-01 13 views
16

'da çok boyutlu bir dizinin seçilmesi Bir DataTable'ı iki boyutlu bir diziye çevirmem gereken bir görev var. Sadece satır ve sütunların üzerinden geçerek yapmak için yeterince kolay (aşağıdaki örneğe bakınız).LINQ

private static string[,] ToArray(DataTable table) 
{ 
    var array = new string[table.Rows.Count,table.Columns.Count]; 

    for (int i = 0; i < table.Rows.Count; ++i) 
     for (int j = 0; j < table.Columns.Count; ++j) 
      array[i, j] = table.Rows[i][j].ToString(); 

    return array; 
} 

Gerçekten yapmaktan hoşlandığım şey, bu 2B dizisini oluşturmak için LINQ içinde bir seçim deyimi kullanmaktır. Maalesef LINQ'da çok boyutlu bir dizi seçmek için bir yol yok gibi görünüyor. Evet, pürüzlü bir dizi seçmek için LINQ kullanabileceğimin farkındayım, ama istediğim bu değil.

benim varsayım doğru mu, yoksa çok boyutlu bir dizi seçmek için LINQ kullanmak için bir yol var?

+0

Bunun yerine bir dizi dizi yapabilir misiniz? (dönüştürmek için daha hızlı olurdu) –

+0

Evet, pürüzlü bir dizi (diziler dizisi) yapabilirim, ama maalesef aradığım api'nin kabul edeceği şey bu değildi. – mckhendry

cevap

15

Bunun mümkün olduğunu düşünmüyorum. olamaz bu yüzden bir dikdörtgen dizi herhangi T için IEnumerable<T> uygulamıyor

public static IEnumerable<TResult> Select<TSource, TResult>(
    this IEnumerable<TSource> source, 
    Func<TSource, TResult> selector 
) 

: My muhakeme Select ve diğer birçok LINQ işlevleri onlar üzerinde çalışmak koleksiyonları bazı T için en az IEnumerable<T> uygulamak gerektirmektedir olmasıdır Select işlevinin dönüş değeri.

+2

Evet, LINQ kullanarak pürüzlü bir dizi elde etmek önemsiz, ancak gerçek bir 2D dizi tamamen başka bir şeydir. –