मेरे मोबाइल एप्लिकेशन, मैं कोशिश करने के लिए पुनः प्राप्त डेटा की एक मेज से मेरा एसक्यूएल सर्वर डेटाबेस । मैं का उपयोग कर रहा हूँ एफई और मैं कोशिश का उपयोग करने के लिए पृष्ठ पर अंक लगाना बेहतर प्रदर्शन के लिए. मैं की जरूरत है डेटा प्राप्त करने के लिए से पिछले तत्व के टेबल पर. तो अगर टेबल पर 20 पंक्तियों में, मैं की जरूरत है, के लिए पृष्ठ 0, आईडी 20, 19, 18, 17, 16 तो के लिए पृष्ठ 1 आईडी 15, 14, 13, 12, 11,,, और इतने पर...
समस्या यह है: क्या होगा अगर, जब उपयोगकर्ता "एक" है, डाउनलोड करने के डेटा तालिका से, उपयोगकर्ता "बी" पंक्ति जोड़ें? यदि उपयोगकर्ता "एक" पृष्ठ 0 तो (IDs 20, 19, 18, 17, 16), और उपयोगकर्ता "बी" एक ही पल में जोड़ें पंक्ति (तो आईडी 21) के साथ, क्लासिक प्रश्न, उपयोगकर्ता "एक" के लिए पृष्ठ 1 प्राप्त होगा आईडी 16, 15, 14, 13, 12... तो एक बार आईडी 16
अपने कोड बहुत सरल है:
int RecordsForPagination = 5;
var list = _context.NameTable
.Where(my_condition)
.OrderByDescending(my_condition_for ordering)
.Skip (RecordsForPagination * Page)
.Take (RecordsForPagination)
.ToList();
बेशक Page
है पूर्णांक से आते हैं कि दृश्यपटल.
कैसे कर सकते हैं मैं इस समस्या को हल?
मैं एक हल मिल गया, लेकिन मैं नहीं पता है अगर यह सही एक है. मैं का उपयोग कर सकता है
.SkipWhile(x => x.ID >= LastID)
इसके बजाय
.Skip (RecordsForPagination * Page)
और बेशक LastID
हमेशा से भेजा जाता है के दृश्यपटल.
क्या आपको लगता है कि प्रदर्शन हमेशा अच्छा है के साथ इस कोड? वहाँ एक बेहतर समाधान है?