不能隐式转换'short?'& # 39;短# 39;.存在显式转换(您是否缺少强制转换?)

本文关键字:转换 是否 显式转换 short 不能 存在 | 更新日期: 2023-09-27 17:49:19

我想从输入(AssessmentName_In_GetAssessmentNo)中获得一个列(assessmentd)。如果我"选择a.d",我的代码就可以工作,但是我想获得的是assessmentd。当我将其更改为评估ID时,我得到了错误。也许和主键有关?在SQL Server Management Studio 2005中,

    public Int16 GetAssessmentNo(string AssessmentName_In_GetAssessmentNo)
    {
        Int16 Num = (from a in contxt.View_AssessmentCount
                       where a.AssessmentName == AssessmentName_In_GetAssessmentNo
                       select a.AssessmentID).FirstOrDefault();

        return Num;
    }

不能隐式转换'short?'& # 39;短# 39;.存在显式转换(您是否缺少强制转换?)

AssessmentID必须为可空列。如果您知道它实际上不是空的,那么您应该能够选择AssessmentID.Value。如果它可以为空,那么您需要将它分配给一个可为空的short (short?),并检查它是否有值。在DB值为空的情况下,也可以使用空合并运算符返回默认值。

public short GetAssessmentNo(string AssessmentName_In_GetAssessmentNo)
{
    short? num = (from a in contxt.View_AssessmentCount
                   where a.AssessmentName == AssessmentName_In_GetAssessmentNo
                   select a.AssessmentID).FirstOrDefault();

    return num ?? (short)-1;
}
相关文章: