2009-03-03 13 views
5

पर शीर्ष, गिनती, समूह और ऑर्डर वाले SQL को कनवर्ट करना कुछ LINQ प्रश्न अभी भी मुझे पहेली करते हैं।LINQ (2 इकाइयां)

एक तालिका 'हिट्स' के लिए दो कॉलम, 'पेज' और 'डेट' युक्त, मैं समय के परिभाषित टुकड़े में सबसे अधिक पंक्तियों के साथ सबसे अधिक पेज ढूंढना चाहता हूं।

एसक्यूएल में मैं इस का प्रयोग करेंगे:

SELECT TOP 10 
     [Page] 
     ,COUNT([Page]) as Number 
FROM dbo.[Hits] 
WHERE [Date] >= CONVERT(datetime,'14 Jan 2009') 
AND [Date] < CONVERT(datetime,'15 Jan 2009') 
Group BY [Page] 
Order by Number DESC 

LINQ में मुझे पता नहीं कैसे इस दृष्टिकोण, किसी को भी मुझे यहाँ मदद कर सकते है? मैंने linqer का उपयोग करके इसे बदलने की कोशिश की, लेकिन यह सिर्फ इस अभिव्यक्ति के लिए एक त्रुटि दिखाता है।

उत्तर

7

इस तरह काम करना चाहिए:

(from p in DataContext.Hits 
where (p.Date >= minDate) && (p.Date < maxDate) 
group p by p.Page into g 
select new { Page = g.Key, Number = g.Count() }).OrderByDescending(x => x.Number).Take(10); 
+0

पी < maxDate -> p.Date में लेखन भूल Sam

+0

ओह, और, ज़ाहिर है, अगर आपके LINQ कोड ग # में प्रयोग किया जाता है एक करने के लिए होगा 'और' के बजाय '&&' का उपयोग करें। डॉनो वीबी में कैसे होना चाहिए। – Sam

7
var top10hits = objectContext.Hits 
    .Where(h => minDate <= h.Date && h.Date < maxDate) 
    .GroupBy(h => h.Page) 
    .Select(g => new { Page = g.Key, Number = g.Count() }) 
    .OrderByDescending(x => x.Number) 
    .Take(10); 
+0

टाइपो में चयन करें (जी => पेज = जी। के, संख्या = जी। गणना()}) -> । चयन करें (जी => नया {पृष्ठ = जी.के, संख्या = जी। गणना()}) अन्यथा "वही .. लेकिन अलग" :) – veggerby

+0

टाइपो नोटिस के लिए धन्यवाद - veggerby; और संपादन - न्याय। –

+0

इसके अलावा - @ "वही ... लेकिन अलग" मुझे लगता है कि विस्तार विधियां क्वेरी समझ वाक्यविन्यास से अधिक खोज योग्य हैं। तो मैं यही उपयोग करता हूं। –

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