2014-11-04 8 views
0

나는이 같은 쿼리가 :EF는 조건이있는 항목을 반환 할 수 없지만 SQL은 이유가 무엇입니까?

int a= pgc.Fronts.Where(i => i.ItemCode == itemcode && i.PC == pc).Count() 

itemcode가 '10414'이며, PC의 값이 결과가 0입니다 null입니다 국지적 인 PGC 내 dbcontext입니다.

그래서 내가 SQL 명령에 대한 쿼리를 변경 :

/****** Script for SelectTopNRows command from SSMS ******/ 
SELECT [Id] 
     ,[No] 
     ,[ItemCode] 
     ,[QtyRequest] 
     ,[PC] 
     ,[Date] 
     ,[Type] 
     ,[Line] 
     ,[joint] 
     ,[QTYIssue] 
     ,[Recivedby] 
    FROM [pgc].[dbo].[Fronts] where ItemCode='10414' and pc is null 

당신이 여기에서 볼 수 있듯이 3 개 레코드를 반환

enter image description here

그래서 그런 일이 왜?

public partial class Front 
    { 
     public long Id { get; set; } 
     public string No { get; set; } 
     public string ItemCode { get; set; } 
     public Nullable<double> QtyRequest { get; set; } 
     public string PC { get; set; } 
     public System.DateTime Date { get; set; } 
     public string Type { get; set; } 
     public string Line { get; set; } 
     public string joint { get; set; } 
     public double QTYIssue { get; set; } 
     public string Recivedby { get; set; } 
    } 

답변

2

난 당신이 null 값과 비교하려는 경우 Object.Equals 사용해야합니다 (최소 Linq2Sql에 대해) 정확히 기억 경우 :

int a = pgc.Fronts.Where(i => 
       i.ItemCode == itemcode && Object.Equals(i.PC, pc)).Count(); 

이 "버그"의 이후 버전에서 수정 된 것 같다 엔티티 프레임 워크. 지금 당신은 사용할 수 있습니다

int a = pgc.Fronts.Where(i => 
     i.ItemCode == itemcode && (i.PC == pc || (pc == null && i.PC == null)).Count(); 
+0

그것은 –

+0

작동하지 않습니다 그것이 작동 감사 –

+0

를 작동하지 않는 이유는, 어떤 PC 값에 대해서는, 쿼리 적용됩니까? –