我想下面的SQL语句转换成LINQ查询:Linq查询与分组和独特的嵌套select语句
select COUNT(*), itemid, globalid, title, preview, previewimage, previewimage_alt, link
from (
select distinct Id, itemid, globalid, title, preview, previewimage, previewimage_alt,
(select top 1 link from LikeCounter where GlobalId=x.GlobalId) as link
from [LikeCounter] x
where PortalId=1 and LanguageId=1
) as t
GROUP BY itemid, globalid, title, preview, previewimage, previewimage_alt, link
ORDER BY COUNT(*) desc
查询是在保存对象的记录被“喜欢一个视图”。由于对象可以在多个位置发布,并且视图被设置为允许过滤某个特定位置,所以在对记录进行分组之前,需要有一个独特的视图来查找视图计数(这就是“链接”附加查询的原因“栏)。
是否可以在一个linq语句中嵌套SELECT语句?
内部查询是没有问题的:
(from x in LikeCounter
where x.PortalId==1 && x.LanguageId==1
select new {x.Id, x.ItemId, x.GlobalId, x.LanguageId, x.Title, x.Preview, x.PreviewImage_alt,
Morelink=(from y in LikeCounter
where y.GlobalId==x.GlobalId
select y.Morelink).FirstOrDefault()
}).Distinct()
但是,有没有办法用的不同的记录分组扩展这个,的结果在短短的一个数据库查询?
预先感谢任何输入...
尼娜
编辑:
下面的查询返回几乎我想要的东西 - 但会产生多个查询到SQL Server:
(from y in
((from x in LikeCounter
where x.PortalId==1 && x.LanguageId==1
select new {x.Id, x.ItemId, x.GlobalId, x.LanguageId, x.Title, x.Preview, x.PreviewImage_alt,
Link=(from y in Xparo_LikeCounter
where y.GlobalId==x.GlobalId
select y.Link).FirstOrDefault()
}).Distinct())
group y by y.GlobalId into grp
select new {Data=grp, Count= grp.Count()}).OrderByDescending (x => x.Count)
我用LINQPad.exe这样的事情... – 2010-08-20 14:51:39
我也是...... 我发现的东西,几乎工作,但产生太多的SQL查询。 – Nina 2010-08-20 15:06:28