ในของฉันเคลื่อนแอพอฉันพยายามกู้ข้อมูลจากโต๊ะของฉันภาษา sql เซิร์ฟเวอร์ฐานข้อมูล ฉันกำลังใช้ EF และฉันพยายามจะใช้ pagination ดีกว่าสำหรับการแสดง. ฉันต้องเก็บข้อมูลจากสุดท้ายของธาตุที่โต๊ะ ดังนั้นถ้าโต๊ะมี 20 แถวฉันต้องการสำหรับหน้า 0,ก็น่าจะเป็นบัตรประจำตั 20,19,18,อายุ 17,16 แล้วสำหรับหน้าที่ 1 ก็น่าจะเป็นบัตรประจำตั 15 นาที 14,13,12 อายุ 11 และดังนั้นบน...
ปัญหาคืออะไรถ้าหากในขณะที่ของผู้ใช้"A"กำลังดาวน์โหลดข้อมูลจากโต๊ะของผู้ใช้"B"เพิ่มแถว? ถ้าของผู้ใช้"A"ได้หน้า 0(งั้นก็น่าจะเป็นบัตรประจำตั 20, 19, 18, 17, 16), และของผู้ใช้"B"ในที่เดียวกันช่วงเวลาเพิ่มแถว(ดังนั้นหมายเลข 21)กับคลาสสิคกับการค้นหาผู้ใช้"A"สำหรับหน้า 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
เป็น int ได้มันมาจาก frontend.
จะให้ฉันแก้ปัญหาได้เหรอ?
ฉันเจอวิธีแก้ปัญหาแต่ฉันไม่รู้ว่ามันเป็นที่หนึ่ง ฉันควรใช้
.SkipWhile(x => x.ID >= LastID)
แทนที่จะเป็น
.Skip (RecordsForPagination * Page)
และแน่นอน LastID
เสมอก็คือส่งจาก frontend.
คุณคิดว่าการแสดงนั้นเป็นเรื่องดีเสมอบรหัสเหรอ? มีดีกว่าทางออก?