首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >LINQ to SQL使用GROUP BY和COUNT(DISTINCT)

LINQ to SQL使用GROUP BY和COUNT(DISTINCT)
EN

Stack Overflow用户
提问于 2009-01-15 19:51:39
回答 6查看 153.9K关注 0票数 66

我必须执行以下SQL查询:

代码语言:javascript
复制
select answer_nbr, count(distinct user_nbr)
from tpoll_answer
where poll_nbr = 16
group by answer_nbr

LINQ to SQL查询

代码语言:javascript
复制
from a in tpoll_answer 
where a.poll_nbr = 16 select a.answer_nbr, a.user_nbr distinct 

映射到以下SQL查询:

代码语言:javascript
复制
select distinct answer_nbr, distinct user_nbr
from tpoll_answer
where poll_nbr = 16

到现在为止还好。然而,当尝试对结果进行分组时,问题就出现了,因为我找不到映射到我在这里编写的第一个查询的LINQ to SQL查询(感谢LINQPad让这个过程变得更容易)。下面是我找到的唯一一个能给我想要的结果的:

代码语言:javascript
复制
from answer in tpoll_answer where answer.poll_nbr = 16 _
group by a_id = answer.answer_nbr into votes = count(answer.user_nbr)

这反过来又在所有SQL查询中产生了丑陋和未优化的结果:

代码语言:javascript
复制
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

任何帮助都将不胜感激。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/448203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档