有没有更简单的方法来实现以下目标?
var obj = from row in table.AsEnumerable()
select row["DOUBLEVALUE"];
double[] a = Array.ConvertAll<object, double>(obj.ToArray(), o => (double)o);
我正在从DataTable
中提取一列,并将该列存储在double
s的数组中。
假设table
是DataTable
,其中包含typeof(Double)
类型名为“DOUBLEVALUE”的列。
答案 0 :(得分:2)
double[] a = (from row in table.AsEnumerable()
select Convert.ToDouble( row["DOUBLEVALUE"] )).ToArray();
如果您的列可能包含空值,请在选择之前添加where row["DOUBLEVALUE"] != null
。
答案 1 :(得分:2)
var obj = (from row in table.AsEnumerable()
select row.Field<double>("DOUBLEVALUE")).ToArray();
当然,.ToArray()
位是可选的;没有ToArray()
,你将得到一个可枚举的双精度序列而不是数组 - 这取决于你是否需要读一次或两次。如果数据中有空值,请改用<double?>
。
(请注意,这需要对System.Data.DataSetExtensions.dll的引用,以及“using System.Data;”语句 - 这会使.Field<T>(...)
扩展方法发挥作用)