繁体   English   中英

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

[英]how to convert database null field value to decimal in C#?

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

例如:我有这两个字段。

string ltl_net_rate = Data.Fields["ufc_oe_pick_ticket_ud_wt_freight_out_net_plus"].FieldValue;
string total_shipment_weight = Data.Fields["ufc_oe_pick_ticket_ud_wt_pick_ticket_weight"].FieldValue;

然后我想做

if (ltl_netplus_rate_new < ltl_net_rate_new) then do something
if (ltl_net_rate_new < 0 || ltl_netplus_rate_new < 0) then do something

我使用了Convert.Todecimal但它给了我输入字符串格式不正确的错误消息。

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

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

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

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

从 DB 获取数据时检查 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM