我有这样的查询:
int a= pgc.Fronts.Where(i => i.ItemCode == itemcode && i.PC == pc).Count()
PGC是我的dbcontext。项目代码是' 10414'并且pc值为null
,结果为0
。
所以我将查询更改为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条记录,如下所示:
为什么会这样?
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; }
}
答案 0 :(得分:2)
如果我没记错(至少对于Linq2Sql),如果你想与空值进行比较,你应该使用Object.Equals:
int a = pgc.Fronts.Where(i =>
i.ItemCode == itemcode && Object.Equals(i.PC, pc)).Count();
这个&#34; bug&#34;似乎已在更高版本的Entity框架中修复。现在你可以使用:
int a = pgc.Fronts.Where(i =>
i.ItemCode == itemcode && (i.PC == pc || (pc == null && i.PC == null)).Count();