如何在C#中将数据库的空字段值转换为十进制?

时间:2019-10-23 14:45:28

标签: c# sql

我有一些数据库字段的数据类型为十进制,但它是db null字段。 因此,我想对这些字段做一些条件,但是在与任何其他十进制值(例如0.00)进行比较之前,我必须将这些字段转换为十进制,但是我不知道如何将数据库空字段转换为十进制。 / p>

例如: 我有这两个领域。

J5

然后我想做

J5

我使用了J5,但它给了我错误消息,提示输入字符串的格式不正确。

然后我知道它是db null字段,因此Convert.Todecimal将无济于事。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您可以通过以下方法使用通用扩展方法来解决您的问题

    public static T DBValue<T>(this object dbValue)
    {
        try
        {
            if (dbValue == DBNull.Value)
                return default;
            return (T)dbValue;
        }
        catch (InvalidCastException)
        {
            return (T) Convert.ChangeType(dbValue, typeof(T));
        }
    }

答案 1 :(得分:-1)

在从数据库获取数据时检查DbNull,如果它们为null,则分配默认值,例如0.00。

例如,获取以下数据时,请按照以下说明检查空值。

if (!DBNull.Value.Equals(Data.Fields["ufc_oe_pick_ticket_ud_wt_freight_out_net_plus"].FieldValue))
            {
                string ltl_net_rate = Data.Fields["ufc_oe_pick_ticket_ud_wt_freight_out_net_plus"].FieldValue;
            }
            else
            {
                string ltl_net_rate = 0.00;

            }



            if (!DBNull.Value.Equals(Data.Fields["ufc_oe_pick_ticket_ud_wt_pick_ticket_weight"].FieldValue))
            {
                string total_shipment_weight = Data.Fields["ufc_oe_pick_ticket_ud_wt_pick_ticket_weight"].FieldValue;
            }
            else
            {
                string total_shipment_weight = 0.00;
            }

或者在onece的if语句中将字符串值转换为十进制(或稍后执行)

decimal ltl_netplus_rate_new  = Convert.ToDecimal(ltl_net_rate);