2009-11-14 14 views
5

मेरे पास linq के बारे में एक प्रश्न है। मैं छोड़ें उपयोग कर रहा हूँ और पेजिंग करने के लिए ले लो:linq पेजिंग - कुल पंक्तियां प्राप्त करें

(from l in db.ProductList 
      select l).Skip((page - 1) * row_per_page).Take(row_per_page) 

यह काम करते हैं, और मैं अधिकतम पेज गणना करने के लिए उत्पाद सूची की कुल पंक्तियों को पुनः प्राप्त करने की जरूरत है। मुझे लगता है कि मुझे पंक्तियों की गिनती करने के लिए एक और प्रश्न का उपयोग करना चाहिए, लेकिन ऊपर एक प्रश्न में ऐसा करने का दूसरा तरीका है?

उत्तर

4

पंक्तियों की एक संख्या प्राप्त करने के लिए, .Count का उपयोग करें() विस्तार विधि

var count = (from l in db.ProductList select l).Count(); 
+1

या: var count = db.ProductList.Count() –

+0

यह ऐसा करेगा, और चूंकि यह गिनती कॉल कर रहा है, इसलिए इसे किसी भी डेटा पेज को स्मृति में खींचना नहीं होगा क्योंकि यह जानकारी इंडेक्स में रखी गई है (इसे मानते हुए तालिका कम से कम एक है); इस क्वेरी अर्थ बहुत तेज, बहुत तेजी से एक भी रिकॉर्ड लौटने से किया जाएगा। – naspinski

0

वहाँ जाने का कोई तरीका दोनों पंक्तियों की कुल संख्या और एक "छोड़/ले" के सबसेट नहीं है एक ही प्रश्न में उन पंक्तियों।

वहाँ एक कारण यह है कि आपके पास दो प्रश्नों में इस की जरूरत है?

1

लब्बोलुआब यह आप सभी आइटम की गणना करने में कुल पृष्ठ संख्या प्राप्त करना होगा है। लेकिन आप उन्हें केवल एक बार गणना करना चाहते हैं। मैं सुझाव है कि आप एक IEnumerable> "पृष्ठ" पाने के लिए GroupBy विधि का प्रयास करें। फिर आप पेज गिनती पाने के लिए पेजों का उपयोग कर सकते हैं। गणना()। या आप वस्तुओं के प्रत्येक पृष्ठ को पाने के लिए पृष्ठों का आकलन कर सकते हैं। ग्रुपबी क्वेरी केवल एक बार निष्पादित की जाएगी।

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