我想下面的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