c# - 为什么这个指定的转换无效??

标签 c# sql floating-point sqldatareader

enter image description here

我使用以下代码将数据从 sql 阅读器映射到 C# 对象。 Power 在代码和 sql 数据库中都是 float 据类型.. y 是否出现了转换错误消息?

private Entity.PanelDetail MapDataReader(SqlDataReader dataReader)
    {
        Entity.PanelDetail panelDetail = new Entity.PanelDetail();
        panelDetail.IdPanelDetail = DataReaderExtensions.GetStringOrNull(dataReader, "idPanelDetail");
        panelDetail.IdDeviceDetail = DataReaderExtensions.GetStringOrNull(dataReader, "idDeviceDetail");
        panelDetail.Power = DataReaderExtensions.GetFloatOrNull(dataReader, "Power");
        panelDetail.Current = DataReaderExtensions.GetFloatOrNull(dataReader, "Current");
        panelDetail.Length = DataReaderExtensions.GetFloatOrNull(dataReader, "Length");
        panelDetail.Width = DataReaderExtensions.GetFloatOrNull(dataReader, "Width");
        panelDetail.CreatedBy = DataReaderExtensions.GetStringOrNull(dataReader, "CreatedBy");
        panelDetail.CreationDate = DataReaderExtensions.GetDateTimeOrNull(dataReader, "CreationDate");
        panelDetail.ModifiedBy = DataReaderExtensions.GetStringOrNull(dataReader, "ModifiedBy");
        panelDetail.ModifiedDate = DataReaderExtensions.GetDateTimeOrNull(dataReader, "ModifiedDate");
        panelDetail.IsActive = DataReaderExtensions.GetBoolOrNull(dataReader, "IsActive");
        panelDetail.IsDeleted = DataReaderExtensions.GetBoolOrNull(dataReader, "IsDeleted");

        return panelDetail;
    }

最佳答案

我的猜测是该值作为装箱的 double 而不是 float 返回。尝试使用

 (float) dataReader.GetDouble(fieldOrdinal);

参见 Mapping CLR Parameter Data

关于c# - 为什么这个指定的转换无效??,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619419/

相关文章:

c# - 构造函数中的依赖属性、更改通知和设置值

C#:如何根据提供者格式将字符串转换为日期?

javascript - Ajax 方法在十进制时没有命中 Controller

Mysql 和 "count"

mysql - 挣扎于最小(日期)解决方案

sql - PostgreSQL - 基于列数据的减法简化查询

floating-point - 想要使用整数数学将 int 缩放为 int

c# - Java 从无效的 HTML 创建 PDF 或图像

jquery - 允许/验证 jquery 中的整数、小数、浮点值

python - 打印超出其精度的 float