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的情况下是错误的。

我怎么能把这种情况放进去呢?

Sql的Linq不在where子句中

只需使用联合??运算符

其中

(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