PagedList usando o LINQ Skip e Take, mas mostra a paginação usando a contagem de resultados

Eu estou tentando exibir uma lista filtrada de produtos, com base no filtro de categoria e ItemsPerPage, mas estou tendo alguns problemas ao tentar usá-lo com PagedList.

Alguém com experiência em PagedList pode me aconselhar se eu precisar escrever meu próprio código de paginação ou se houver uma maneira de obter os resultados que preciso usando PagedList.

Estou usando as funções Skip & Take do LINQ para obter apenas o número de linhas que precisam ser exibidas na página atual, mas ainda gostaria de links de paginação para mostrar páginas com base na contagem total do filtro.

Por exemplo.: meu filtro de pesquisa encontra 50 resultados, mas como minhas linhas por página são de 10 itens, eu uso o Skip () & Take () do LINQ para obter apenas 10 linhas de volta. Eu ainda preciso mostrar no meu View.cshtml os links da página<< 1 | 2 | 3 | 4 | 5 >> Agora com PagedList padrão, eu só recebo<< 1 >>, Eu sei porque eu vejo apenas uma página, mas só queria saber como posso fazer funcionar para mostrar o número correto de links de páginas, enquanto obtendo apenas um subconjunto de resultados.

** Meu objetivo é escrever consultas otimizadas no banco de dados para que o desempenho da resposta da página da Web seja rápido.

Aqui está o meu código para o método de ação parece. O código está obtendo os resultados corretos, mas a paginação não está funcionando como eu preciso que seja:

public ViewResult List(int page =1, string category =null)
{
    if (category != null) this.CurrentCategory = category;

    var products = repository.Products
                    .Where(p => this.CurrentCategory == null || p.Category == this.CurrentCategory)
                    .OrderBy(p => p.ProductID)
                    .Skip((page -1) * PageSize)
                    .Take(PageSize);

    return View(products.ToList().ToPagedList(page, PageSize));
}

Aqui está o snippet de código da visualização que lida com a paginação. Analisei o site do projeto no Github, mas não consegui encontrar um método de extensão para fornecer páginas personalizadas. Eu acho que só irá renderizar o número de páginas com base em 'itens por página' e o Count () de produtos no @Model:

@model IPagedList<Product>

//foreach loop that renders the @Model

//Code that displays the pagination using PagedList
<div style="text-align:center">
    @Html.PagedListPager(Model, page => Url.Action("List", new { page = page, category =  ViewBag.CurrentCategory }), PagedListRenderOptions.OnlyShowFivePagesAtATime
    )
</div>

questionAnswers(5)

yourAnswerToTheQuestion