2017-12-05 1 views
3

Ich habe eine Linq-Abfrage mit einer where-Klausel, wie untenLinq Sql Int null gleich null. Nicht wiederkehrende Reihen

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 
           }); 

In der Datenbank GroupID ist ein int, die null sein kann. Die linq-Abfrage gibt Zeilen ohne die gefilterte where-Klausel zurück, aber keine, wenn ich die where-Klausel einschließe. In der Spalte GroupId in der Datenbank sind Nullwerte.

Es ist definitiv diese Aussage, die keine Ergebnisse produziert. Die ganze Literatur zu diesem Thema sagt online, dass diese äquivalent zu

pd1.GroupID is null // in sql 

ich Ergebnisse bin immer, dass dies im Widerspruch zu

SQL-Code ist

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 
+0

Ist GroupID in Ihr Modell ein NULL-fähiger Typ? –

+0

Ja, in der Modell GroupID ist ein int? –

+0

Es sollte int sein? Gruppen-ID. –

Antwort

1

Sie können Ihre where mit dem join kombinieren, Das sollte Ihnen die erwarteten Ergebnisse geben:

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 
           });