0

我需要 DataRow 的扩展方法,即返回双精度列表。

我假设,我的 DataRow 只包含双数据类型。

我试过这样的事情:

public static List<double> ToListOfDouble(this DataRow datarow)
{
    List<double> retList = new List<double>();

    foreach (object val in datarow) // error here
    {
        retList.Add((double)val);
    }

    return retList;
}

但我有错误:

foreach 语句无法对“System.Data.DataRow”类型的变量进行操作,因为“System.Data.DataRow”不包含“GetEnumerator”的公共定义

4

2 回答 2

2

一个简单的选择:

return datarow.ItemArray.Cast<double>().ToList();

不过,这可能涉及不必要的副本。在数据复制方面效率更高,但在验证等方面可能效率较低:

int count = row.Table.Columns.Count;
var ret = new List<double>(count);
for (int i = 0; i < count; i++)
{
    ret.Add((double) datarow[i]);
}
return ret;

如果您认为这对您的应用很重要,您应该对这两个选项进行基准测试以检查它们的性能。

于 2013-05-01T16:36:40.570 回答
0

DataRow.ItemArray是您要迭代的属性(不是datarow它本身)。

于 2013-05-01T16:35:53.553 回答