none
Erro no Select - Entity Framework RRS feed

  • Pergunta

  • Bom dia a todos,Fazer uma Pergunta

    Estou com o seguinte problema: tenho uma query com um join, para recuperar valores de duas tabelas, porém, para utilizá-los, preciso dar um select new {b1, b2} 

    Mas o problema é que preciso comparar um valor do banco do tipo INT com o selectedValue da ComboBox que é populado com o resultado da query, no caso, a que está abaixo.

    Alguém tem uma luz?

    cbCargo.DataSource = from b in ef.cargos
                         join b2 in ef.nomes_cargos on b.id_nomecargo equals b2.id_nomecargo
                         where b.id_unidadenegocio == (Int32)cbUnNegocio.SelectedValue
                         orderby b.nomes_cargos.nome
                         select new { b, b2 };


    terça-feira, 5 de fevereiro de 2013 10:14

Respostas

  • Você vai ter que criar uma outra classe que contenha os campos que você precisa para mostrar no DataSource.

    Atualmente, vocÊ está retornando um objeto anonimo (select new) com dois objetos dentro.

    Ou você pode tentar retornar o objeto anonimo, mas dessa forma:

    select new { Codigo = b.CodigoCargo, Descricao = b2.DescricaoCargo };
    
    //no combobox:
    cbCargo.DisplayMember = "Descricao";
    cbCargo.ValueMember = "Codigo";

    Se isso não funcionar, então você vai ter que criar uma outra classe com esses campos e usá-la no select new:

    select new OutraClasse(b.CodigoCargo, b2.DescricaoCargo);


    Take a look at WPF FlashMessage
    About.me

    terça-feira, 5 de fevereiro de 2013 11:46

Todas as Respostas

  • Já tentou?

    var valor = (Int32)cbUnNegocio.SelectedValue;
    cbCargo.DataSource = from b in ef.cargos
                         join b2 in ef.nomes_cargos on b.id_nomecargo equals b2.id_nomecargo
                         where b.id_unidadenegocio == valor
                         orderby b.nomes_cargos.nome
                         select new { b, b2 };


    Take a look at WPF FlashMessage
    About.me

    terça-feira, 5 de fevereiro de 2013 11:04
  • Na verdade, Joba, acho que não expliquei direito.

    O SelectedValue depende do resultado da query, entende? 

    Esta query preenche a Combo, até ai ok. Porém, quando eu preencho com a query que eu postei acima, o SelectedValue fica: 

    cbCargo.SelectedValue = { b = Acesso.cargos, b2 = Acesso.nomes_cargos }

    E como tem esses valores ai, eu não consigo passar um INT que vem do banco para fazer o preenchimento, entendeu? Eu preciso dar o select num campo só 

    -----

    Porque assim, eu usei Join para pegar dados de 2 tabelas, pois o DisplayMember e o ValueMember são de tabelas diferentes, porém, se eu der select em apenas umas das tabelas, uma das propriedades não funciona, ou seja, funciona apenas aquela que eu dei o select

    terça-feira, 5 de fevereiro de 2013 11:34
  • Você vai ter que criar uma outra classe que contenha os campos que você precisa para mostrar no DataSource.

    Atualmente, vocÊ está retornando um objeto anonimo (select new) com dois objetos dentro.

    Ou você pode tentar retornar o objeto anonimo, mas dessa forma:

    select new { Codigo = b.CodigoCargo, Descricao = b2.DescricaoCargo };
    
    //no combobox:
    cbCargo.DisplayMember = "Descricao";
    cbCargo.ValueMember = "Codigo";

    Se isso não funcionar, então você vai ter que criar uma outra classe com esses campos e usá-la no select new:

    select new OutraClasse(b.CodigoCargo, b2.DescricaoCargo);


    Take a look at WPF FlashMessage
    About.me

    terça-feira, 5 de fevereiro de 2013 11:46
  • Olá,

    Estou movendo este post para a categoria 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, 6 de fevereiro de 2013 12:08
    Moderador