简单 LINQ:无法将'short?'隐式转换为"短"。存在显式转换(您是否缺少强制转换?



我想从输入(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;
    }

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;
}

相关内容

最新更新