0

double のリストを返す DataRow の拡張メソッドが必要です。

私のDataRowにはdoubleデータ型のみが含まれていると思います。

私はこのようなことを試しました:

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;
}

しかし、私はエラーがあります:

'System.Data.DataRow' には 'GetEnumerator' のパブリック定義が含まれていないため、foreach ステートメントは 'System.Data.DataRow' 型の変数を操作できません。

4

2 に答える 2

2

1 つの簡単なオプション:

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 に答える