c# - LINQ:分页技术,使用 take 和 skip 但还需要总记录 - 如何实现?

标签 c# linq linq-to-sql count subquery

我已经使用 skip and take 实现了一个分页例程。它工作得很好,但在调用 Take 和 Skip 之前我需要表中的记录总数。

我知道我可以提交 2 个单独的查询。

  1. 计数
  2. 跳过并采取

但我不想对 LINQ 发出 2 次调用。

如何在同一个查询中返回它(例如使用嵌套的选择语句)?

以前,我在存储过程中使用了分页技术。我使用临时表返回项目,并将计数传递给输出参数。

最佳答案

对不起,你不能。至少,不是以一种漂亮的方式。

你可以用一种不漂亮的方式来做,但我认为你不喜欢那样:

var query = from e in db.Entities where etc etc etc;

var pagedQuery = 
    from e in query.Skip(pageSize * pageNumber).Take(pageSize)
    select new
    {
        Count = query.Count(),
        Entity = e
    };

你看到了吗?一点都不漂亮。

关于c# - LINQ:分页技术,使用 take 和 skip 但还需要总记录 - 如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275935/

相关文章:

c# - Foreach 迭代 Null

Visual Studio 2005 中的 LINQ to SQL

c# - 在 Linq to Sql 中调用 InsertOnSubmit 时出现 NullReferenceException

c# - 应该尽可能使用静态方法吗?

c# - 如何使用NEST准确表示此ElasticSearch查询?

C# WPF 设置焦点 TabItem

c# - C#中的命名空间冲突

entity-framework - 如何在 Entity Framework 中动态构建 Where 表达式?

c# - 按多列返回 linq 组的类型

C#Linq按组选择多列并同时在值字段上应用求和(聚合函数)