我有一些数据库字段的数据类型为十进制,但它是db null字段。 因此,我想对这些字段做一些条件,但是在与任何其他十进制值(例如0.00)进行比较之前,我必须将这些字段转换为十进制,但是我不知道如何将数据库空字段转换为十进制。 / p>
例如: 我有这两个领域。
J5
然后我想做
J5
我使用了J5
,但它给了我错误消息,提示输入字符串的格式不正确。
然后我知道它是db null字段,因此Convert.Todecimal将无济于事。
任何人都可以帮我解决这个问题吗?
答案 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);