RAM WEB 0 Denunciar post Postado Agosto 13, 2011 Boa noite a todos. Gostaria de contar com a ajuda de vocês para solucionar um problema. Possuo em meu site uma rotina que conta a quantidade de clicks em um determinado produto. Esses dados ficam salvos em uma tabela de um banco de dados MySQL. Gostaria de realizar uma consulta a essa tabela usando LINQ e retornar apenas os 3 maiores valores. A página foi desenvolvida em c# e utilizo o framework Entity Data Source para realizar a conexão com o banco de dados. Para retornar todos os dados em ordem decrescente tenho o seguinte comando: public List<produtoclicks> retornarProdutoMaisClicado() { ram = new entRAM(); var objram = from p in ram.produtoclicks.Include("produto").ToList() orderby p.qdadeClick descending select p; return objram.ToList(); } Gostaria então da ajuda de vocês para que eu resgate apenas 3 itens dessa tabela ou mesmo que recupere toda a tabela, que eu envie como retorno apenas os 3 últimos. Caso eu tenha publicado o post em local errado peço desculpa, mas em outro post que encontrei no forum indicavam para que publicasse nessa área. Muito obrigado a todos que partilharem seu conhecimento comigo. :) Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Agosto 13, 2011 public List<produtoclicks> retornarProdutoMaisClicado() { ram = new entRAM(); var objram = from p in ram.produtoclicks.Include("produto").ToList() orderby p.qdadeClick descending take(3) select p; return objram.ToList(); } Compartilhar este post Link para o post Compartilhar em outros sites
RAM WEB 0 Denunciar post Postado Agosto 13, 2011 Boa noite Daniel, agradeço desde já sua ajuda. Utilizei a alteração que você me passou, mas é apresentado o seguinte erro: A query body must end with a select clause or a group clause. Você tem ideia o que pode ter ocasionado esse erro? :( Compartilhar este post Link para o post Compartilhar em outros sites
Daniel LM Costa 2 Denunciar post Postado Agosto 14, 2011 a cláusula que faz isso é a clausula Take acho que deve ser a forma de usá-la http://www.macoratti.net/08/01/linq_op1.htm Compartilhar este post Link para o post Compartilhar em outros sites
RAM WEB 0 Denunciar post Postado Agosto 20, 2011 Olá pessoal. Passo para agradecer a ajuda de vocês e postar a solução. :clap: Basta no retorno da função acrescentar o take com o número de registros a ser retornado. Obrigado a todos e segue o código corrigido. :lol: public List<produtoclicks> retornarProdutoMaisClicado() { ram = new entRAM(); var objram = from p in ram.produtoclicks.Include("produto").ToList() orderby p.qdadeClick descending select p; return objram.Take(NUMERO DE REGISTROS QUE DESEJA RECUPERAR).ToList(); } Compartilhar este post Link para o post Compartilhar em outros sites