【问题标题】:Extract column of doubles from a DataTable从数据表中提取双精度列
【发布时间】:2008-12-13 03:42:48
【问题描述】:

有没有更简单的方法来实现以下目标?

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

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

我正在从 DataTable 中提取一列并将该列存储在 doubles 的数组中。

假设table 是一个DataTable,其中包含一个名为“DOUBLEVALUE”的列,类型为typeof(Double)

【问题讨论】:

    标签: c# .net linq


    【解决方案1】:
    var obj = (from row in table.AsEnumerable()
          select row.Field<double>("DOUBLEVALUE")).ToArray();
    

    .ToArray() 位当然是可选的;没有ToArray(),你将得到一个可枚举的双精度序列而不是一个数组——这取决于你是否需要阅读一次或两次。如果数据中有空值,请改用&lt;double?&gt;

    (请注意,这需要对 System.Data.DataSetExtensions.dll 的引用和“使用 System.Data;”语句 - 这将使用 .Field&lt;T&gt;(...) 扩展方法)

    【讨论】:

      【解决方案2】:
      double[] a = (from row in table.AsEnumerable()
                    select Convert.ToDouble( row["DOUBLEVALUE"] )).ToArray();
      

      如果您有可能对该列具有空值的行,请在选择之前添加where row["DOUBLEVALUE"] != null

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-28
        • 1970-01-01
        • 1970-01-01
        • 2011-07-07
        • 2022-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多