强制转换为可空列表的double会出错

时间:2018-04-19 07:16:27

标签: c#

在我的数据库中我有DOUBLE PRECESION类型(Postgressql) 在我的查询中,双精度字段可以为null,所以我使这个列表可以为空,但在铸造期间我得到了

  

"指定的演员表无效"

列表的定义如下:

public List<double?> abb_conv { get; set; }

我在这一行中遇到错误:

  _powerConv.abb_conv.Add((double?)dt["abb_conv"]);

其中dtDatatable

的名称

2 个答案:

答案 0 :(得分:1)

您可以从DataRow

中读取值

对于DataTable,它将如下所示:

foreach (var row in dt.Rows)
{
    var value = row.Field<double?>("abb_conv");
    list.Add(value);
}

但当然,潜在价值应该是对应的double类型。

整个清单

List = dt.AsEnumerable().Select(row => row.Field<double?>("abb_conv").ToList();

答案 1 :(得分:1)

dt成为数据表,并且您希望获得列abb_conv的值,请尝试以下操作:

 int rowNumber = 0;
 _powerConv.abb_conv.Add(dt.Rows[rowNumber].Field<double?>("abb_conv"));

请注意:

  

如果dt["abb_conv"]dt,您正在使用的代码(Cannot apply indexing with[] to an expression of type 'DataTable')将无法编译   自procedure DoSomethingWithVar(var AField); DoSomethingWithVar(TGUID(nil^).D3); // TGUID and D3 for exposition only :-)

以来的数据表