【发布时间】:2009-01-15 19:51:38
【问题描述】:
我必须执行以下 SQL 查询:
select answer_nbr, count(distinct user_nbr)
from tpoll_answer
where poll_nbr = 16
group by answer_nbr
LINQ to SQL 查询
from a in tpoll_answer
where a.poll_nbr = 16 select a.answer_nbr, a.user_nbr distinct
映射到以下 SQL 查询:
select distinct answer_nbr, distinct user_nbr
from tpoll_answer
where poll_nbr = 16
到目前为止,一切都很好。但是,在尝试对结果进行 GROUP 时会出现问题,因为我无法找到映射到我在此处编写的第一个查询的 LINQ to SQL 查询(感谢LINQPad 使此过程变得更加容易)。以下是我发现的唯一一个给我想要的结果:
from answer in tpoll_answer where answer.poll_nbr = 16 _
group by a_id = answer.answer_nbr into votes = count(answer.user_nbr)
这又会产生以下丑陋且根本没有优化的 SQL 查询:
SELECT [t1].[answer_nbr] AS [a_id], (
SELECT COUNT(*)
FROM (
SELECT CONVERT(Bit,[t2].[user_nbr]) AS [value], [t2].[answer_nbr], [t2].[poll_nbr]
FROM [TPOLL_ANSWER] AS [t2]
) AS [t3]
WHERE ([t3].[value] = 1) AND ([t1].[answer_nbr] = [t3].[answer_nbr]) AND ([t3].[poll_nbr] = @p0)
) AS [votes]
FROM (
SELECT [t0].[answer_nbr]
FROM [TPOLL_ANSWER] AS [t0]
WHERE [t0].[poll_nbr] = @p0
GROUP BY [t0].[answer_nbr]
) AS [t1]
-- @p0: Input Int (Size = 0; Prec = 0; Scale = 0) [16]
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.1
任何帮助将不胜感激。
【问题讨论】:
标签: c# linq linq-to-sql