【问题标题】:Linq to Sql isnull in where clause not workingLinq to Sql isnull 在 where 子句中不起作用
【发布时间】:2014-06-18 11:30:52
【问题描述】:

我的 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 的情况下会出错。

我怎样才能把那个条件放进去?

【问题讨论】:

    标签: c# sql sql-server linq sql-server-2008-r2


    【解决方案1】:

    只需使用合并 ?? 运算符

    在哪里

    (tesrt.EH_PP_TESRT_TeacherEvalStatusID  ?? 0) == 1
    

    或者如果它是一个字符串(你的代码不是很清楚)

    (tesrt.EH_PP_TESRT_TeacherEvalStatusID  ?? "0") == "1"
    

    但是根据给出的示例代码,这似乎没用(第一个版本应该这样做)。

    如果你的意思是

    取 tesrt.EH_PP_TESRT_TeacherEvalStatusID 为 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
    

    【讨论】:

      猜你喜欢
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      相关资源
      最近更新 更多