页码应该(以及可能的排序顺序和方向)来自客户端。所以客户点击某个页面然后..
我个人使用某种包含您需要的所有属性的过滤器。
使用该过滤器,您只需要指定需要在网格中显示的页面以及每页需要多少项目。
var pageNumber = 1;// current page should come from the client
var filter = new BaseFilter(){CurrentPage = pageNumber, ItemsPerPage = 30};
var items = GetItemsByFilter(filter, Query.LTE("SomeDate",DateTime.Now)),
                                     SortBy.Ascending("SortField"));
//For basic paging you only following three properties
var totalCount = filter.TotalCount; // here will be total items count
var pagesCount = filter.TotalPagesCount; // here will be total pages count
// pageNumber  = current page
您还可以从 BasicFilter 推断并添加查询、排序所需的任何属性。这里过滤代码(希望对你有用):
 public List<Item> GetItemsByFilter(BaseFilter filter, 
                   QueryComplete query, SortByBuilder sort)
 {
   var resultItems = new List<Item>();
   var cursor = Db.Data.FindAs<BsonItem>(query);
   cursor.SetSortOrder(sort);
   if (filter.IsNeedPaging)
   {
     cursor.SetSkip(filter.Skip).SetLimit(filter.Take);
     filter.TotalCount = cursor.Count();
   }
   resultItems.AddRange(cursor);
   return resultItems;
 }
 public class BaseFilter
 {
   private int _itemsPerPage = 10;
   private int _skip = 0;
   private int _currentPage = 1;
   public BaseFilter()
   {
     IsNeedPaging = true;
   }
   public int Skip
   {
     get
     {
       if (_skip == 0)
         _skip = (CurrentPage - 1) * _itemsPerPage;
       return _skip;
     }
     set
     {
       _skip = value;
     }
   }
   public int Take
   {
     get
      {
         return _itemsPerPage;
      }
     set
      {
        _itemsPerPage = value;
      }
    }
    public bool IsNeedPaging { get; set; }
    public int TotalCount { get; set; }
    public int CurrentPage
    {
      get
        {
           return _currentPage;
        }
      set
        {
          _currentPage = value;
        }
    }
    public int ItemsPerPage
    {
      get
        {
          return _itemsPerPage;
        }
      set
        {
          _itemsPerPage = value;
        }
     }
     public int TotalPagesCount
     {
       get
         {
           return TotalCount / ItemsPerPage + 
                            ((TotalCount % ItemsPerPage > 0) ? 1 : 0);
         }
     }
   }