一段非常诡异的代码,求助,在线等 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
[其他解释]你确认你的类型匹配吗
[其他解释]别确定了、自己看看哪里不匹配吧
[其他解释]建议先确定,类型是否一致。
[其他解释]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();
}
}
}
字段是这样定义的
[其他解释]看好多遍了都,没有问题的说,两个类型都是一样的
[其他解释]换这个也是没有用,还是报那个错误
[其他解释]原来是这个表的另一个字段对应数据库字段不对应,跟这个字段毫无关系,就好像例如现在是ChargeCode进行筛选,其实是这个表的RefType在程序的类型是string在数据库中却是Numeric,所以就报那个错误了