2011-04-18 12 views
16

द्वारा समूह द्वारा क्रमबद्ध करें और मैं एक SQL क्वेरी को NHibernate QueryOver वाक्यविन्यास में कनवर्ट करने का प्रयास कर रहा हूं, लेकिन मुझे समझ में नहीं आता कि गणना प्रक्षेपण द्वारा क्रमबद्ध कैसे करें।मैक्सआरसल्ट के साथ NHibernate QueryOver,

select top 10 v.intVoteUserID, COUNT(v.intVoteUserID) 
from Group_MessageVotes v 
where v.dtmVote > :date 
group by v.intVoteUserID 
order by COUNT(v.intVoteUserID) desc 

कोई भी विचार:

इस एसक्यूएल क्वेरी की तरह लग रहा है?

उत्तर

20

आप बस OrderBy-खंड में प्रक्षेपण दोहरा सकते हैं।

निम्नलिखित क्वेरी आपको IList<object[]> देगी जहां प्रत्येक आइटम का पहला तत्व आईडी है और दूसरा गिनती है।

var result = session.QueryOver<GroupMessageVotes>() 
.Select(
    Projections.Group<GroupMessageVotes>(e => e.intVoteUserID), 
    Projections.Count<GroupMessageVotes>(e => e.intVoteUserID) 
    ) 
.OrderBy(Projections.Count<GroupMessageVotes>(e => e.intVoteUserID)).Desc 
.Take(10) 
.List<object[]>(); 
+0

क्या ये सभी सामान्य तर्क आवश्यक हैं? –

+1

@Stefan स्टैनेगर मुझे लगता है कि वे लैम्ब्डा भाव के लिए आवश्यक हैं। इसके बजाय 'अनुमान। गणना ("intVoteUserID") लिखना संभव है, लेकिन मैं पहला विकल्प पसंद करता हूं। –

+0

'अनुमानों को लिखना संभव होना चाहिए। गणना (ई => e.intVoteUserID) '। –

संबंधित मुद्दे