![](/img/trans.png)
[英]how to convert string field to decimal value in c# crystal report
[英]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.