LINQ:分页技术,使用take和skip但也需要总记录 - 如何实现?
我已经使用skip 和take 实现了分页例程。它工作得很好,但在调用 Take 和 Skip 之前我需要表中的记录总数。
我知道我可以提交 2 个单独的查询。
- Get Count
- Skip and Take
但我不想向 LINQ 发出 2 次调用。
如何在同一查询中返回它(例如使用嵌套选择语句)?
以前,我在存储过程中使用了分页技术。我使用临时表返回了这些项目,并将计数传递给了输出参数。
I have implemented a paging routine using skip and take. It works great, but I need the total number of records in the table prior to calling Take and Skip.
I know I can submit 2 separate queries.
- Get Count
- Skip and Take
But I would prefer not to issue 2 calls to LINQ.
How can I return it in the same query (e.g. using a nested select statement)?
Previously, I used a paging technique in a stored procedure. I returned the items by using a temporary table, and I passed the count to an output parameter.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
抱歉,但你不能。至少,不是以一种漂亮的方式。
你可以用一种不漂亮的方式来做,但我认为你不喜欢那样:
你明白吗?一点也不漂亮。
I'm sorry, but you can't. At least, not in a pretty way.
You can do it in an unpretty way, but I don't think you like that:
You see? Not pretty at all.
没有理由执行两个单独的查询甚至存储过程。完成后,使用 let 绑定来记录子查询,您可以拥有一个包含所选项目以及总计数的匿名类型。对数据库进行一次查询,1 个 linq 表达式即可完成。要获取值,可以使用 jobQuery.Select(x => x.item) 或 jobQuery.FirstOrDefault().Count
Let 表达式是一件令人惊奇的事情。
There is no reason to do two seperate queries or even a stored procedure. Use a let binding to note a sub-query when you are done you can have an anon type that contains both your selected item as well as your total count. A single query to the database, 1 linq expression and your done. TO Get the values it would be jobQuery.Select(x => x.item) or jobQuery.FirstOrDefault().Count
Let expressions are an amazing thing.