一段非常诡异的代码,求助,在线等
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
------其他解决方案--------------------你确认你的类型匹配吗
------其他解决方案--------------------
别确定了、自己看看哪里不匹配吧
------其他解决方案--------------------建议先确定,类型是否一致。
------其他解决方案--------------------th.ChargeCode 如果你确定这个为string的话,你试试Equals吧
------其他解决方案--------------------
呵呵,调试程序,就一句话“千万别说你这个非常确定以及肯定,你说的没用,要机器说了算!你就说破天去,机器说不是就不是,死机器不说谎”
------其他解决方案--------------------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();
}
}
}
字段是这样定义的
------其他解决方案--------------------