我有Linq查询:
var notstartedcount = (from te in context.EH_PP_TeacherEvaluations
join tesrt in context.EH_PP_TeacherEvaluationStatusesRefTables
on te.EH_PP_TESRT_TeacherEvalStatusID equals
tesrt.EH_PP_TESRT_TeacherEvalStatusID
where tesrt.EH_PP_TESRT_TeacherEvalStatusID.Equals("1") ||
tesrt.EH_PP_TESRT_TeacherEvalStatusID.Equals("")
select te).Count();
我只想将Isnull(ColumnName,replacement)
置于Sql中的条件。
例如:
where isNull(EH_PP_TESRT_TeacherEvalStatusID,0)=1
我为linq保持了相同的条件:
var notstartedcount = (from te in context.EH_PP_TeacherEvaluations
join tesrt in context.EH_PP_TeacherEvaluationStatusesRefTables
on te.EH_PP_TESRT_TeacherEvalStatusID equals
tesrt.EH_PP_TESRT_TeacherEvalStatusID
where
isnull(tesrt.EH_PP_TESRT_TeacherEvalStatusID.Equals(Null),0).Equals("1") ||
tesrt.EH_PP_TESRT_TeacherEvalStatusID.Equals("")
select te).Count();
但是在linq的情况下它的错误。
我怎样才能把这个条件纳入其中?
答案 0 :(得分:3)
只需使用合并??
运算符
,其中
(tesrt.EH_PP_TESRT_TeacherEvalStatusID ?? 0) == 1
或者如果它是一个字符串(对你的代码不是很清楚)
(tesrt.EH_PP_TESRT_TeacherEvalStatusID ?? "0") == "1"
但是根据给出的示例代码,这似乎没用(第一个版本也应该这样做)。
如果你的意思是
获取tesrt.EH_PP_TESRT_TeacherEvalStatusID为NULL或NULL的所有值 tesrt.EH_PP_TESRT_TeacherEvalStatusID == 1
然后
tesrt.EH_PP_TESRT_TeacherEvalStatusID == null || tesrt.EH_PP_TESRT_TeacherEvalStatusID == 1
或
tesrt.EH_PP_TESRT_TeacherEvalStatusID ?? 1 == 1