当前位置: 首页 > 编程语言 > C#

C#实体框架分页分享

时间:2023-04-10 11:08:29 C#

C#实体框架分页有没有办法在不访问数据库两次或编写2个单独的查询的情况下获取复杂的Linq查询和数百万条记录的行数?我可能有自己的建议。写一个存储过程,但我擅长MySQL而不是MSSQL。任何更好的建议都会很棒。另外,如果有人知道Microsoft是否将此功能添加到实体框架中。我推荐使用Take()函数。这可用于指定要从linq查询或列表中获取的记录数。例如List_customers=(fromaindb.customersselecta).ToList();var_dataToWebPage=_customers.Take(50);我在MVC应用程序中使用了类似的技术,我将_customers列表写入会话,然后在用户单击第2,3页等时使用此列表进行进一步的分页查询。这可以节省多次数据库命中。但是,如果您的列表非常大,那么编写它也可能不是一个好主意。对于分页,您可以同时使用Skip()和Take()函数。例如,要获取数据的第2页:var_dataToWebPage=_customers.Skip(50).Take(50);显示数百万条记录的常用方法是不显示所有页面。想一想:如果您有数百万条记录,比如每页20甚至100个项目,那么您将有数万页。没有必要展示它们。您只需加载当前页面并提供指向下一页的链接。或者您可以加载100-500条记录,但仍然只显示一个页面,并使用加载的记录信息生成指向前几页的页面链接(以便确切知道有多少下一页可用)。在sqlserver上很容易。您可以编写此查询:selectcount()over(),table.*fromtablecount()over()将返回结果中的总行数,因此您无需运行两个查询。记住,你应该在你的上下文中运行rawsql或者使用返回结果作为视图模型的dapper关于C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: