将数据类型nvarchar转换为十进制时出错的解决方案

时间:2015-10-19 17:16:01

标签: c# asp.net visual-studio

我有一个关于将数据类型nvarchar转换为十进制的问题,在我更新这些信息的过程中,我的解决方案在转换错误时中断。所以这是我的代码:

我的代码:

objGrupoComplementar.CusteioSegurado = (reader.GetDecimal(reader.GetOrdinal("CusteioSegurado")));
objGrupoComplementar.CusteioEstipulante = (reader.GetDecimal(reader.GetOrdinal("CusteioEstipulante")));
objGrupoComplementar.ProLabore = (reader.GetDecimal(reader.GetOrdinal("Prolabore")));

,这是我的错误:

"Erro ao Alterar Cadastro Grupo Complementar: Error converting data type nvarchar to decimal." 

将nvarchar转换为十进制

时出错

有人知道我如何解决这个错误? 谢谢。

1 个答案:

答案 0 :(得分:0)

利用一些可重用的代码,以便能够将字符串解析为十进制。字符串很可能是null,空或由非数字字符组成。创建一个静态扩展类并尝试以下方法。

public static decimal ConvertAsDecimal(this string input, decimal defaultValue = default(decimal))
{
    if (!string.IsNullOrWhiteSpace(input))
    {
        decimal result;
        if (decimal.TryParse(input, out result))
        {
            return result;
        }
    }

    return defaultValue;
}

或者对于可以为空的十进制来说是这样的:

    public static decimal? ConvertAsDecimalNullable(this string input, decimal? defaultValue = null)
    {
        if (!string.IsNullOrWhiteSpace(input))
        {
            decimal result;
            if (decimal.TryParse(input, out result))
            {
                return result;
            }
        }

        return defaultValue;
    }