none
Consulta com Entity Framework a partir de um TextBox (lambda) RRS feed

  • Pergunta

  • Bom dia, 

     Gostaria de fazer uma consulta com parâmetros passados em um TextBox, utilizo framework entity, com expressões lambda.

    Obrigado.

     

    terça-feira, 3 de julho de 2012 14:30

Respostas

Todas as Respostas

  • Marcos, boa tarde.

    você pode fazer como no exemplo abaixo:

    var query = myCodeFirst.Produtos.Where(c => c.Nome.Contains(TextBox1.Text)).ToList();


    Olavo Oliveira Neto
    http://olavooneto.wordpress.com
    Twitter @Olavooneto
    Facebook Olavo Neto
    Linkedin Olavo Neto
    Se for útil marque como resposta e faça um Developer feliz :)

    terça-feira, 3 de julho de 2012 15:36
  • = >, que é lido como "vai para".O lado esquerdo do operador lambda especifica os parâmetros de entrada (se houver) e o direito contém a expressão ou o bloco de instruções

    http://msdn.microsoft.com/pt-br/library/bb397687.aspx


    Ivan Ferraz, MCP,MCTS Desenvolvedor 3 Estrelas ASP.NET

    www.ivanferraz1105.blogspot.com


    quarta-feira, 4 de julho de 2012 00:17
  • Bom dia Olavo, o select seria assim // select * from produto where nomeProduto...

    Isso eu queria trazer em gridview......

    quarta-feira, 4 de julho de 2012 11:09
  • Prezado(a),
    Estou migrando seu post para o fórum de Acesso a Dados.
    Por favor, das próximas vezes que tiver alguma dúvida relacionada a esse assunto, poste por lá.
    Obrigado.

    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    quarta-feira, 4 de julho de 2012 11:27
    Moderador
  • Olá Marcos,

    O código que o Olavo passou esta certinho.

    Para apresentar os dados no GridView vc deve fazer algo como:

    var query = myCodeFirst.Produtos.Where(c => c.Nome.Contains(TextBox1.Text)).ToList();
    this.seuGridView.DataSource = query;
    this.seuGridView.Bind();

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 4 de julho de 2012 13:23
    Moderador
  • Olá Fernando, 

    Bom fiz assim :

     protected void Button1_Click(object sender, EventArgs e)
            {
                using (var ctx = new Web1Entities())
                {
                    var query = ctx.produto.Where(c => c.nomeProduto.Contains(TextBox1.Text)).ToList();
                    GridView2.DataSource = query;
                    GridView2.DataBind();


                }

            }

    Ele tá trazendo todo o conteúdo da tabela... e não só o que eu dígito no TextBox...

     

    quarta-feira, 4 de julho de 2012 13:29
  • Olá Marcos,

    Neste caso podemos refinar a consulta. O CONTAINS funciona como um Like do SQL, vamos alterar para == e ver o resultado.

    Destam forma:

    protected void Button1_Click(object sender, EventArgs e)
            {
                using (var ctx = new Web1Entities())
                {
                    var query = ctx.produto.Where(c => c.nomeProduto == TextBox1.Text).ToList();
                    GridView2.DataSource = query;
                    GridView2.DataBind();
                }
            }

    []s!

    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    • Marcado como Resposta Marcos Bazilio quarta-feira, 4 de julho de 2012 13:37
    quarta-feira, 4 de julho de 2012 13:30
    Moderador
  • Obrigado... agora funcionou certinho... 

    Obrigado também ao Olavo...

    quarta-feira, 4 de julho de 2012 13:38
  • Marcos,

    Se vc não se importa vou marcar a resposta do Olavo como certa também, pois ele foi o primeiro a atender a thread e montou toda a query lambda.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 4 de julho de 2012 13:39
    Moderador
  • Ah, só mais uma coisa...

     Se neste Grid quero mostrar mais dados deste produto (tabelas relacionadas) como incluir nesta lambda?  

    quarta-feira, 4 de julho de 2012 13:41
  • Opá... me desculpe, não sabia que poderia marcar duas como certas... 
    quarta-feira, 4 de julho de 2012 13:48
  • Olá Marcos,

    Neste caso, o que eu recomendo é criar uma classe com todos os dados que vc quer apresentar para o usuário e preencher esses dados com informações da sua consulta.

    Desta forma:

    protected void Button1_Click(object sender, EventArgs e)
            {
                using (var ctx = new Web1Entities())
                {
                    var query = (from p in ctx.produto
                                where p.nomeProduto == TextBox1.Text
                                select new ClasseVisualizacao {NomeProduto = p.NomeProsuto, Fabricante = p.Fabricante.Nome}).ToList();
                    GridView2.DataSource = query;
                    GridView2.DataBind();
                }
            }

    Neste caso, estou simulando que vc teria criado uma classe chamada ClasseVisualizacao, com as propriedades NomeProduto e Fabricante.

    Fiz a query com LINQ, pois neste cenário é mais intuitivo o seu uso.

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 4 de julho de 2012 13:57
    Moderador
  • Sou novo em desenvolvimento .Net..., o acesso estou fazendo com entity, mesmo não conhecendo a fundo vejo algumas vantagens, Linq eu não vi ainda..., devo estudar também...?



    quarta-feira, 4 de julho de 2012 14:14
  • Fiz assim....

                       

     using (var ctx = new Web1Entities())
                    {
                        GridView2.DataSource = (from p in ctx.produto
                                     where p.nomeProduto == TextBox6.Text
                                     select new
                                     {

                                         nomeproduto = p.nomeProduto,
                                         tipoProduto = p.tipoProduto,

                                     }).ToList();



                        GridView2.DataBind();


                    }

    Sendo o campo tipoProduto esta em outra tabela... 

    Ao chamar o Grid no campo tipoProduto aparece Web1.tipoProduto, onde deveria aparecer o Grupo que o produto pertence...

    quarta-feira, 4 de julho de 2012 14:40
  • Ah... resolvi , obrigado!

    quarta-feira, 4 de julho de 2012 14:45
  • Olá Marcos,

    Com relação ao LINQ e o EF existem algumas diferenças conceituais.

    O EF é um framework de acesso a dados. Ele é um recurso utilizado para conectar em bases de dados. LINQ é uma linguagem de consulta a banco de dados. Vc escreve uma consulta LINQ, o EF recebe essa consulta e executa na base de dados.

    Este artigo deve ajudar: http://msdn.microsoft.com/pt-br/library/jj128159

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quarta-feira, 4 de julho de 2012 17:33
    Moderador