【问题标题】:Linq Sql Int null equal to null. Not returning rowsLinq Sql Int null 等于 null。不返回行
【发布时间】:2017-12-05 03:32:34
【问题描述】:

我有一个带有如下 where 子句的 linq 查询

var ExistingGroupDataSource = (from ppatg in dbContext.XXXXXXXXX
                               join pd1 in dbContext.XXXXXXXXXXX on ppatg.ScheduleID equals pd1.ScheduleID 
                               where  pd1.GroupID == null
                               select
                               new 
                               {
                                FinishPDI = pd1.ProductionDateID,
                                FinishingDate = pd1.WorkFlowDate,
                                ppatg.GroupName,
                                ppatg.PNTGroupID
                               });

在数据库中 GroupID 是一个可以为 null 的 int。 linq 查询返回没有过滤 where 子句的行,但当我包含 where 子句时没有返回。数据库中 GroupId 列有空值。

绝对是这个语句没有产生任何结果。网上所有关于该主题的文献都说这相当于

pd1.GroupID is null // in sql

我得到的结果与此相矛盾

Sql代码是

 select pd1.ProductionDateID as FinishPDI, pd1.WorkflowDate as FinishingDate,GroupName ,PNTGroupId 
 from XXXXXXXXXXXX 
 inner join XXXXXXXXXXXX pd1 on 
 XXXXXXXXXXXX.ScheduleId = pd1.ScheduleID
 where pd1.GroupID is null 

【问题讨论】:

  • 你的模型中的 GroupID 是可以为空的类型吗?
  • 是的,在模型中 GroupID 是一个 int?
  • 应该是int?组 ID。
  • 可以显示sql代码吗?
  • @Backs 添加 sql 代码

标签: c# sql linq


【解决方案1】:

您可以将您的wherejoin 结合起来,这应该会给您预期的结果:

var ExistingGroupDataSource = (from ppatg in dbContext.XXXXXXXXX
                               join pd1 in dbContext.XXXXXXXXXXX.Where(p => !p.GroupId.HasValue) on ppatg.ScheduleID equals pd1.ScheduleID 
                               select
                               new 
                               {
                                FinishPDI = pd1.ProductionDateID,
                                FinishingDate = pd1.WorkFlowDate,
                                ppatg.GroupName,
                                ppatg.PNTGroupID
                               });

【讨论】:

    猜你喜欢
    • 2011-05-26
    • 2019-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2014-02-19
    • 1970-01-01
    相关资源
    最近更新 更多