Ну, каков источник данных? Ваше действие могло взять, некоторые приняли значение по умолчанию, аргументы, т.е.
ActionResult Search(string query, int startIndex, int pageSize) {...}
приняли значение по умолчанию в установке маршрутов так, чтобы startIndex был 0, и размер страницы (говорят) 20:
routes.MapRoute("Search", "Search/{query}/{startIndex}",
new
{
controller = "Home", action = "Search",
startIndex = 0, pageSize = 20
});
Для разделения канала можно использовать LINQ довольно легко:
var page = source.Skip(startIndex).Take(pageSize);
(или делают умножение при использовании "pageNumber", а не "startIndex")
С LINQ-toSQL, EF, и т.д. - это должно "сочинить" вниз к базе данных, также.
необходимо тогда быть в состоянии использовать ссылки действия на следующую страницу (и т.д.):
<%=Html.ActionLink("next page", "Search", new {
query, startIndex = startIndex + pageSize, pageSize }) %>
В конечном итоге я изменил sun.jvm.hotspot.utilities.IntervalTree
, чтобы сохранить Набор удаленных узлов. При поиске я исключаю любые предметы из этого набора. Не идеально, но это было намного проще, чем заставить работать «настоящее» удаление. Как только удаленный набор становится слишком большим, я восстанавливаю дерево.
В этом проекте есть реализация RangeTree, которая может быть для вас более полезной. Пакеты sun могут быть подходящими для быстрого и грязного использования, но я бы не рекомендовал создавать что-либо важное, полагаясь на них. Солнце может не поддерживать их стабильность.
Я не знаю ваших точных требований, но нестатическое дерево сегментов может вам подойти. Если это так, обратите внимание на ПО управления макетом , в частности на пакет SegmentTree . В нем есть функция удаления, которая вам нужна.
Если вы решите откатить свой собственный, могу ли я предложить открыть исходный код? Я удивлен, что до сих пор нет открытого и простого дерева интервалов.