2009-04-16 8 views
39

मेरे पास निम्न linq क्वेरी है, जो ठीक काम करता है। मुझे यकीन नहीं है कि मैं समूह के परिणाम कैसे आदेश देता हूं।मैं लिंक में समूह परिणाम कैसे ऑर्डर करूं?

from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
select new { UserId = g.Key, Score = g.Sum(x => x.Score) } 

परिणाम वर्तमान में UserId आरोही द्वारा आदेश दिए गए हैं। मैं स्कोर अवरोही के बाद हूँ।

धन्यवाद :)

उत्तर

64

बस orderby खंड ;-)

from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
let score = g.Sum(x => x.Score) 
orderby score descending 
select new { UserId = g.Key, Score = score }; 
+0

मैंने केवल ऑर्डरबाय जोड़ने की कोशिश की लेकिन यह काम नहीं किया। लेकिन आपने जो किया वह वहां एक एलईटी स्टेटमेंट जोड़ रहा था! आह .. यह दिलचस्प है ... –

+0

मैंने जांच नहीं की, लेकिन मुझे नहीं लगता कि एलईटी आवश्यक है, हालांकि। बस "ऑर्डरby g.Sum (x => x.Score)" पर्याप्त होगा? –

+0

हो सकता है, लेकिन फिर मुझे g.Sum को भी चयन में सूचीबद्ध करना होगा ... तो क्या यह योग दो बार कर रहा है? –

13
var results = 
(from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
select new { UserId = g.Key, Score = g.Sum(x => x.Score) }) 
.OrderByDescending(p=>p.Score); 

आशा इससे आपकी समस्या ठीक होगा, शीर्ष एक की तुलना में आसान जोड़ने;)

चीयर्स

+1

+1। इस उत्तर को पोस्ट करने के 3 साल बाद, इससे आज मेरी मदद मिली! – utsikko