请教个GROUP BY的问题

重典 2010-09-09 12:19:48
这是我的LINQ:

var ret = (from h in db.house_source_list
group h by h.account_id into g
where g.Count() < 30
select g.Key)
.Take(50);


生成的SQL(执行会出错):

SELECT
`Limit1`.`account_id`
FROM (SELECT
`GroupBy1`.`K1` AS `account_id`
FROM (SELECT
COUNT(1) AS `A1`
FROM `house_source_list` AS `Extent1`
GROUP BY
`Extent1`.`account_id`) AS `GroupBy1`
WHERE `GroupBy1`.`A1` < 30 LIMIT 50) AS `Limit1`


出错原因是 内层的SELECT 只取出 COUNT(1), 而我最后的结果需要 GroupBy1`.`K1` AS `account_id` -- Group by 的KEY


请问LINQ需要怎么调整呢?谢谢
...全文
1695 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingdom_0 2011-05-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 teng_s2000 的回复:]

最好还是用MSSQL吧

默认的Provider只对SQL Server支持的好些
[/Quote]恩恩.
ljyabc1028 2011-05-01
  • 打赏
  • 举报
回复
var mm = from t in context.Subject group t by t.StudentName into m select new Entity.Class1{ ID = m.Key, UserID = m.Count(), UserType =m.Sum(p => p.Grade) };
,这也是一个相似的例子
claymore1114 2011-04-29
  • 打赏
  • 举报
回复
MySql 数据库问题。
kingdom_0 2011-04-29
  • 打赏
  • 举报
回复
var ret = (from h in db.house_source_list
group h by h.account_id into g
let c=g.Count()
where c < 30
select g.Key)
.Take(50);
q107770540 2011-03-23
  • 打赏
  • 举报
回复
var ret = (from h in db.house_source_list
group h by h.account_id into g
let c=g.Count()
where c < 30
select g.Key)
.Take(50);
Teng_s2000 2010-11-09
  • 打赏
  • 举报
回复
最好还是用MSSQL吧

默认的Provider只对SQL Server支持的好些
yucuihaimeng 2010-11-09
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 bourbon1795 的回复:]
目前linq还不支持mysql.
[/Quote]
模糊中记得也是这样的 ,LINQ TO SQL 好像是只支持 SQL Server 数据库,但愿不要误导了你....
henory_lin 2010-11-07
  • 打赏
  • 举报
回复
建议用 linqPad 可以调试
bourbon1795 2010-09-21
  • 打赏
  • 举报
回复
目前linq还不支持mysql.
huminghua 2010-09-19
  • 打赏
  • 举报
回复
你放到SQLSERVER里面执行一下!试试!
q107770540 2010-09-09
  • 打赏
  • 举报
回复
你这句翻译成SQL应该是什么样子的
yingyuebingya 2010-09-09
  • 打赏
  • 举报
回复

SELECT COUNT(1) AS `A1`, Extent1`.`account_id` as GroupBy1`.`K1`
FROM `house_source_list` AS `Extent1`
GROUP BY `Extent1`.`account_id
// GroupBy1 ...
重典 2010-09-09
  • 打赏
  • 举报
回复
MySql 的数据库..... 不会是因为MySql的数据库支持不好吧.....
APOLLO_TS 2010-09-09
  • 打赏
  • 举报
回复
你那是什么数据库?

(from e in Employees
group e by e.City into z
where z.Count()<50
select z.Key).Take(50)

-- Region Parameters
DECLARE @p0 Int SET @p0 = 50
-- EndRegion
SELECT TOP (50) [t1].[City]
FROM (
SELECT COUNT(*) AS [value], [t0].[City]
FROM [Employees] AS [t0]
GROUP BY [t0].[City]
) AS [t1]
WHERE [t1].[value] < @p0
重典 2010-09-09
  • 打赏
  • 举报
回复
就是说 我无法让 group by 后的结果,查询出 key
重典 2010-09-09
  • 打赏
  • 举报
回复
我想生成的 SQL是

SELECT `Limit1`.`account_id`FROM
(SELECT `GroupBy1`.`K1` AS `account_id` FROM
(SELECT COUNT(1) AS `A1`, Extent1`.`account_id` as GroupBy1`.`K1` FROM `house_source_list` AS `Extent1`
GROUP BY `Extent1`.`account_id`) AS `GroupBy1`

WHERE `GroupBy1`.`A1` < 30 LIMIT 50) AS `Limit1`


标红色的地方,是没有生成出来的

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧