2016-01-05 80 views
-6

在传递数据集表转换为列表时返回异常。错误返回无法将类型为'System.Decimal'的对象转换为键入'System.String'

//here i am passing dataset tables to FromDataRow 
var list = ClassA.FromDataRow(ds.Tables[1].AsEnumerable()); 

//here is function implementation 
    public class ClassA 
    { 
     public List<UserDesignation> UserDesigGrid { get; set; } 

     public static ClassA FromDataRow(IEnumerable<DataRow> userDesignationDetails, IEnumerable<DataRow> userContactDeails, IEnumerable<DataRow> userCategoryDetails) 
     { 
      var classA = new ClassA 
      { 
       UserDesigGrid = userDesignationDetails.Select(r => new UserDesignation 
       { 
        USER_ID = (int)r["USER_ID"], 
        DESIGNATION = (string)r["DESIGNATION"], 
        USER_TYPE = (string)r["LOCATION_TYPE"], 
        LOCATION = (string)r["LOCATION_ID_NAME"], 
        EFFECTIVE_FROM = (string)r["WEF_DATE"], 
        EFFECTIVE_TO = (string)r["WET_DATE"], 

       }).ToList()   
      }; 
      return classA; 
     } 
    } 
//property layer 
public class UserDesignation 
    { 
     public int USER_ID { get; set; } 
     public string DESIGNATION { get; set; } 
     public string USER_TYPE { get; set; } 
     public string LOCATION { get; set; } 
     public string EFFECTIVE_FROM { get; set; } 
     public string EFFECTIVE_TO { get; set; } 

    } 

返回异常而转换

“无法投型 'System.Decimal' 的对象键入 'System.String'”

+5

该错误似乎很自我解释。其中一个字段是您要显式转换为字符串的小数。尝试并使用r [“DESIGNATION”]。ToString() –

+0

尝试使用'ToString()'方法代替投射。另外,应该检查空值。 –

+0

或者,使用'decimal'作为属性的类型而不是'string' ...我强烈要求您同时遵循.NET命名约定。 –

回答

1

有没有隐性或显性的转换从十进制到字符串。您可以尝试:

string yourString = a.ToString(); 

其中a是十进制变量。

相关问题