LINQ的基本SQL计数

时间:2011-03-24 15:54:33

标签: asp.net sql linq

我有一个无法解决的微不足道的问题。目前,我们的应用程序使用Linq检索数据并获取行计数的基本整数值。我无法形成一个没有“选择i”的计数。我不需要select,只需要count(*)响应。我该怎么做呢?以下是一个示例:

return (from io in db._Owners
           where io.Id == Id && io.userId == userId
           join i in db._Instances on io.Id equals i.Id **select i**).Count()

3 个答案:

答案 0 :(得分:3)

select i很好 - 它实际上不会将任何数据提取回客户端,因为Count()调用将被转换为SQL端的Count(something)调用。

如有疑问,请查看为您的查询生成的SQL,例如使用DataContext.Log属性。

答案 1 :(得分:1)

使用LINQ查询语法需要select语句。没有办法解决这个问题。

话虽如此,该语句将转换为基于COUNT()的查询; select i仅用于满足作为LINQ查询提供程序基础的表达式系统(否则表达式的类型将是未知的)。

答案 2 :(得分:0)

包含select不会影响这里的性能,因为最终的查询将被转换为SQL。此时它将进行优化,并且类似于select (*) from ......