Sql的Linq不在where子句中
本文关键字:子句 where 不在 Linq Sql | 更新日期: 2023-09-27 18:09:12
我的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)
放在where条件下,就像我们在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的情况下是错误的。
我怎么能把这种情况放进去呢?
只需使用联合??
运算符
其中
(tesrt.EH_PP_TESRT_TeacherEvalStatusID ?? 0) == 1
或者如果它是一个字符串(你的代码不太清楚(
(tesrt.EH_PP_TESRT_TeacherEvalStatusID ?? "0") == "1"
但在给出示例代码的情况下,这似乎毫无用处(第一个版本也应该这样做(。
如果你的意思是
取tesrt中的所有值。EH_PP_TESRT_TeacherEvalStatusID为空或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