将小型int字段转换为不起作用的字符串

时间:2016-06-02 14:04:32

标签: c#-4.0 linq-to-sql linq-to-entities

我有一个模型和方法如下。数据库中BudgetHealth的字段类型为smallint / null。 我想将检索到的值转换为字符串。代码编译但在运行时因错误而失败 我不能做转换。

写这个的最好方法是什么?

ID  Result1 Result2 Result3 Result4
1   Positive    Negative        
2   Negative    Inconclusive    Positive    
3   Negative    Positive        
4   Positive        

2 个答案:

答案 0 :(得分:0)

你可以尝试:

BudgetHealth = ((jj.BudgetHealth != null) ? jj.BudgetHealth.ToString() : String.Empty),

编辑:它实际上可能是这一行,而不是您的BudgetHealth:

jj.StatusDate.Equals(strstatusDate) 

因为strstatusDate是DateTime

答案 1 :(得分:0)

我猜你应该在查询表达式中使用let关键字将cast int转换为字符串值。

let:在查询表达式中,存储子表达式的结果有时很有用,以便在后续子句中使用它。您可以使用let关键字执行此操作,该关键字将创建一个新的范围变量,并使用您提供的表达式的结果对其进行初始化。使用值初始化后,范围变量不能用于存储其他值。但是,如果范围变量包含可查询类型,则可以查询它。

我希望以下代码对您有所帮助。

objProjHnotes = (from jj in _objContext.tbl_Project_Status_Followup
                  let strBudgetHealth = Convert.ToString(jj.BudgetHealth) 
                 where (jj.ProjectID.Equals(projectId)) && (jj.StatusDate.Equals(strstatusDate))

                 select new Projecthealthnotes()
                 {
                     ProjectId = jj.ProjectID,
                     BudgetHealth = strBudgetHealth,
                     TeamHealth = jj.TeamHealth                                 
                 }).FirstOrDefault();