2016-01-22 52 views
0

我需要计算一个数据库表。 当我做下面的事情时,我可以看到该表枚举(看起来像行回来,然后在应用服务器端计数),但我希望SQL服务器执行计数,然后返回计数。LINQ计数()但不返回所有行

db.Places.Where(x => x.City == 'San Jose').Count() 
+1

您可以将您的拉姆达体内COUNT(),并省略凡拨打 – Filip

+5

不,应该被翻译成SQL。你怎么“看到桌子列举”?如果您在调试器中查看“Where”的结果,那么它将在计数之前在服务器上执行。 –

+2

不要相信Linq方法的调试器 - 将结果合并到列表数组_then_中,然后在调试器中查看它。在EF和Linq-to-Objects中发生的事情太多,使调试器中的结果看起来不同。 –

回答

1

这完全依赖于您正在使用的Linq to SQL提供程序,但其中大多数应该将您的LINQ语句转换为实际的服务器端计数。

您需要在您的提供程序上启用日志记录或打开数据库分析以查看发送给它的实际SQL。

PS:请用适当的提供者和SQL服务器标记(例如:LINQ到SQL SQL服务器)