2008-12-13 3 views
2

Есть ли более простой способ добиться следующего?Извлечь столбик из двухместных номеров из DataTable

var obj = from row in table.AsEnumerable() 
      select row["DOUBLEVALUE"]; 

double[] a = Array.ConvertAll<object, double>(obj.ToArray(), o => (double)o); 

Я извлечение столбца из DataTable и хранения столбца в массиве double с.

Предположим, что table является номером DataTable, содержащим колонку под названием «DOUBLEVALUE» типа typeof(Double).

ответ

2
var obj = (from row in table.AsEnumerable() 
     select row.Field<double>("DOUBLEVALUE")).ToArray(); 

.ToArray() бит является необязательным, конечно; без ToArray(), вы получите перечислимую последовательность удвоений вместо массива - это зависит от того, нужно ли вам читать его один или два раза. Если у вас есть нули в данных, используйте вместо этого <double?>.

(обратите внимание, что необходима ссылка на System.Data.DataSetExtensions.dll, и «с помощью System.Data;» заявление - это приносит .Field<T>(...) методы расширения в игру)

2
double[] a = (from row in table.AsEnumerable() 
       select Convert.ToDouble(row["DOUBLEVALUE"])).ToArray(); 

Если у вас есть строки, которые могут иметь нулевые значения для этого столбца, добавьте where row["DOUBLEVALUE"] != null до выбора.