Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Capitulo 5 Exercício 5

Não consegui usar o Skip ao usar o orderby antes.

Cannot implicitly convert type 'System.Linq.IQueryable' to 'System.Linq.IOrderedQueryable'. An explicit conversion exists (are you missing a cast?)

2 respostas

Ola Pablo Tenta utilizar esta solução abaixo, que usei:

DAO Produto `` public IEnumerable ListaPaginada(int paginaAtual) { var busca = from p in contexto.Produtos.Include("Categoria") orderby p.Id select p;

int resultadosPorPagina = 5; int skip = resultadosPorPagina * (paginaAtual - 1);

var lista = busca.Skip(skip).Take(resultadosPorPagina);

IList resultado = lista.ToList();

return resultado.ToList(); } ``


Controller Produto `` public ActionResult ListaPaginada(int? pagina) {

int paginaAtual = pagina.GetValueOrDefault(1); ViewBag.Pagina = paginaAtual; IEnumerable produtos = this.dao.ListaPaginada(paginaAtual); return View(produtos); } ``

solução!

Ola Rogério obrigado pela ajuda, apliquei uma solução aqui atraves da sua resposta e fui atras do que realmente aconteceu. O problema foi que ao fazer esta query do Linq abaixo e usar o orderby a variável busca se tornou um IOrderedQueryable

var busca = from p in contexto.Produtos
                        orderby p.Id
                        select p;

Em seguida ao escrever o código abaixo e usar os métodos Skip e Take da classe Queryable estava implicitamente tentando fazer uma conversão de IQueryable para IOrderedQueryable o que não é possível.

busca = busca.Skip(skipPage).Take(resultadosPorPagina);

Com a sua solução proposta e que solucionou o erro aconteceu que ao atribuir o resultado em uma nova variável não foi necessário mais em runtime se fazer cast pois a variável lista do tipo var ira assumir o tipo que será passado em runtime e esta nova variável sera o retorno da DAO como IQueryable

var lista = busca.Skip(skipPage).Take(resultadosPorPagina);
return lista.ToList();

Mais uma vez muito obrigado pela ajuda, através dela resolvi o erro e também tive a oportunidade de ira atras do porque estudando mais afundo.