在我的移动应用程序,我尝试以检索的数据表我SQL服务器数据库。 我使用的EF和我尝试使用分页的更好的业绩。 我需要检索数据的最后一个要素的表格。 因此,如果表有20个行,我需要,为页0,IDs20日、19日、18日、17日、16然后对第1页Id15日、14日、13日、12日、11日和等...
问题是这样的:如果有什么,虽然用户"A"被下载的数据表格,用户"B"添加行? 如果用户"A"获得页0(以Id20, 19, 18, 17, 16), 和用户"B"在同一时刻,添加行(因此ID21),与经典的查询,用户"A"对于第1页将得到IDs16, 15, 14, 13, 12... 这样另一个时间ID16
我的代码非常简单:
int RecordsForPagination = 5;
var list = _context.NameTable
.Where(my_condition)
.OrderByDescending(my_condition_for ordering)
.Skip (RecordsForPagination * Page)
.Take (RecordsForPagination)
.ToList();
当然 Page
是int来自前端。
我如何能解决问题吗?
我找到一个解决方案,但我不知道如果这是完美的一个。 我可以用
.SkipWhile(x => x.ID >= LastID)
而不是
.Skip (RecordsForPagination * Page)
当然 LastID
总是发送给前端。
你认为性能总是良好用这个代码? 是有一个更好的解决办法?