一段非常诡异的代码,求助,在线等
 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();
				}
			}
		}
字段是这样定义的
------其他解决方案--------------------