首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一段非常诡异的代码,

2012-12-17 
一段非常诡异的代码,求助,在线等 public Data.TbFmCharge GetChargeDetail(string ChargeCode){Data.DataC

一段非常诡异的代码,求助,在线等


 public Data.TbFmCharge GetChargeDetail(string ChargeCode)
    {
        Data.DataContext dc = new Data.DataContext(gzConnectionString);
        if (dc.TbFmCharges.Any(th => th.ChargeCode == ChargeCode))
        {
            return dc.TbFmCharges.FirstOrDefault(th => th.ChargeCode == ChargeCode);      
        }
        else
            return new Data.TbFmCharge();
    }



其中th.ChargeCode 是string 类型的
然后在红色的那一句上面报
无法将类型为“System.Decimal”的对象强制转换为类型“System.String”。 


我表示相当无奈,求助,求助~~在线等~~
[最优解释]
类型转换一下, Decimal无法隐式转换为string
[其他解释]
你确认你的类型匹配吗
[其他解释]
引用:
非常确定以及肯定,两个都是String类型的

别确定了、自己看看哪里不匹配吧
[其他解释]
建议先确定,类型是否一致。
[其他解释]
th.ChargeCode  如果你确定这个为string的话,你试试Equals吧
[其他解释]
引用:
非常确定以及肯定,两个都是String类型的


呵呵,调试程序,就一句话“千万别说你这个非常确定以及肯定,你说的没用,要机器说了算!你就说破天去,机器说不是就不是,死机器不说谎”
[其他解释]
th => th.ChargeCode 
你把鼠标hover到后面一个th上面,看一下th的数据类型,再看一下这个数据类型里面定义的ChangeCode属性,是什么类型的
我怀疑lz是在不同的class里面都定义了ChangeCode属性,一个是String的,一个是Decimal的
Search "ChangeCode" in entire solution就了然了
[其他解释]
你就说破天去,机器说不是就不是,死机器不说谎
[其他解释]
不是的,那个传进去的参数也是字符串的说
[其他解释]
非常确定以及肯定,两个都是String类型的
[其他解释]
奇了个怪的,为什么那个颜色变不了呢
[其他解释]
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ChargeCode", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
[global::System.Runtime.Serialization.DataMemberAttribute(Order=4)]
public string ChargeCode
{
get
{
return this._ChargeCode;
}
set
{
if ((this._ChargeCode != value))
{
this.OnChargeCodeChanging(value);
this.SendPropertyChanging();
this._ChargeCode = value;
this.SendPropertyChanged("ChargeCode");
this.OnChargeCodeChanged();
}
}
}


字段是这样定义的




[其他解释]
引用:
引用:
非常确定以及肯定,两个都是String类型的


别确定了、自己看看哪里不匹配吧




看好多遍了都,没有问题的说,两个类型都是一样的
[其他解释]
引用:
th.ChargeCode  如果你确定这个为string的话,你试试Equals吧




换这个也是没有用,还是报那个错误
[其他解释]
原来是这个表的另一个字段对应数据库字段不对应,跟这个字段毫无关系,就好像例如现在是ChargeCode进行筛选,其实是这个表的RefType在程序的类型是string在数据库中却是Numeric,所以就报那个错误了

热点排行