private static void SetAnchor <TKey, TValue>(List <KeyValuePair <TKey, TValue> > list, PagingPredicate <TKey, TValue> pagingPredicate, int nearestPage)
        {
            if (list.Count == 0)
            {
                return;
            }

            int size     = list.Count;
            int pageSize = pagingPredicate.GetPageSize();

            for (int i = pageSize; i <= size; i += pageSize)
            {
                KeyValuePair <TKey, TValue> anchor = list[i - 1];
                nearestPage++;
                pagingPredicate.SetAnchor(nearestPage, anchor);
            }
        }
        private static void SetAnchor <TKey, TValue>(IList <KeyValuePair <TKey, TValue> > list,
                                                     PagingPredicate pagingPredicate, int nearestPage)
        {
            if (list.Count == 0)
            {
                return;
            }
            var size     = list.Count;
            var pageSize = pagingPredicate.PageSize;
            var page     = pagingPredicate.Page;

            for (var i = pageSize; i <= size && nearestPage < page; i += pageSize)
            {
                var anchor = list[i - 1];
                nearestPage++;
                pagingPredicate.SetAnchor(nearestPage, anchor.Key, anchor.Value);
            }
        }