2012-04-24 56 views
1

有人看到linq从查询中删除行吗?Linq从存储过程和内联查询中删除行

如果我查询数据库

SELECT * FROM staging_flowrates其中,“2012年4月16日”之间flowdate和“2012年4月22日”

我回去共有29个记录,这是我会期待。

如果我在linq中调用这个程序,我会得到25条记录。我已经做了很多不同的方式,他们都返回结果小于29

List<weekly_invoice_dataResult> meterdata = flowRateDB.weekly_invoice_data(173, date.AddDays(-8), date.AddDays(-2)).ToList();} 

var meters = from c in flowRateDB.staging_flowrates 
      where c.FlowDate >= date.AddDays(-8) && c.FlowDate <= date.AddDays(-2) 
      select c; 

所有这些返回25行,但如果我回去ADO,做一个计数我得到29.我一直在使用linq约6年,我没有注意到这一点。

有什么想法?

Matt

+1

你如何得到'日期'?它可以有一个时间组件!= 0?也许尝试用'(新日期(2012,4,24))'而不是日期来查询 – HugoRune 2012-04-24 20:28:16

+0

我认为@HugoRune在这里有一些东西。这种差异也可能是由数据库中的非唯一键值(L2S称为主键的字段)造成的。 – 2012-04-25 11:44:47

回答

0

我建议您启动SQL Server Profiler并捕获执行的确切SQL。拿这个SQL并在SSMS中自己执行它。我的猜测是,执行的查询在某些方面是错误的,你将能够看到为什么。

有一点是肯定的:LINQ不会丢失行。原因是执行了SQL。