我有一个无法解决的微不足道的问题。目前,我们的应用程序使用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()
答案 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 ......