Linq to sql 不明确的LINQ到SQL映射
我正在研究LINQ映射到SQL的方式,在获取一个简单的东西时遇到了一些困难 有一个表会话,它为每个用户登录保存一行。考虑下面的SQLLinq to sql 不明确的LINQ到SQL映射,linq-to-sql,Linq To Sql,我正在研究LINQ映射到SQL的方式,在获取一个简单的东西时遇到了一些困难 有一个表会话,它为每个用户登录保存一行。考虑下面的SQL SELECT COUNT(*) AS c FROM sessions GROUP BY sessions.user_id ORDER BY c DESC 我正在使用LINQPad测试LINQ到SQL的转换 海峡前进 from s in Sessions group s by s.User_id into logins orderby lo
SELECT COUNT(*) AS c
FROM sessions
GROUP BY sessions.user_id
ORDER BY c DESC
我正在使用LINQPad测试LINQ到SQL的转换
海峡前进
from s in Sessions group s by s.User_id into logins
orderby logins.Count() descending
select new { c = logins.Count() }
给我
SELECT [t1].[value2] AS [c]
FROM (
SELECT COUNT(*) AS [value], COUNT(*) AS [value2]
FROM [sessions] AS [t0]
GROUP BY [t0].[user_id]
) AS [t1]
ORDER BY [t1].[value] DESC
修改的
(from s in Sessions group s by s.User_id into logins
select new { c = logins.Count() }).OrderByDescending(v => v.c)
映射到
SELECT [t1].[value2] AS [c]
FROM (
SELECT COUNT(*) AS [value], COUNT(*) AS [value2]
FROM [sessions] AS [t0]
GROUP BY [t0].[user_id]
) AS [t1]
ORDER BY [t1].[value] DESC
我就是不能得到这个最佳输出。有办法吗?
或者,也许,我不应该担心SQL是否会得到优化?该查询没有问题,如果您担心的是这样的话,它不会对行进行两次计数 或者,也许我不应该担心SQL会得到优化 比较最佳sql和生成的sql的执行计划。Sql Studio-单击显示估计的执行计划 通过检查并借鉴我多年来点击该按钮的经验,生成的子查询根本不存在任何问题 即使是这个查询也应该是很好的意思:不需要额外的io
SELECT [t1].[value2] AS [c]
FROM (
SELECT COUNT(*) AS [value], COUNT(*) AS [value2]
FROM [sessions] AS [t0]
GROUP BY [t0].[user_id]
) AS [t1]
ORDER BY [t1].[value] DESC
林克就是这样点餐的。实际的查询生成器将对此进行优化。我很确定,如果您手动优化该查询,它将给出完全相同的查询执行计划。