none
Selecionar todos registros de duas tabelas LINQ C# RRS feed

  • Pergunta

  • Pessoal, como eu consigo retornar todas as colunas de duas tabelas usando join na expressão?

    Segue meu código:

    var data = from loc in local.SEG_LOCAL_TRABALHO
                           join cid in local.CAD_MUNICIPIO
                           on loc.ID_CIDADE equals cid.ID_MUNICIPIO
                           select new { loc, cid };

    quando eu uso o código acima ele traz separado as duas tabelas, o objetivo é:

    BindingSource.DataSource = data;
    Deve trazer todos os registros.

    Obrigado



    Leonardo Jacques da Silva Desenvolvedor .net

    quarta-feira, 16 de outubro de 2013 18:54

Todas as Respostas

  • quarta-feira, 16 de outubro de 2013 19:46
  • Ao invés de retornar as duas tabelas select new { loc, cid };

    Retorne os dados que irão compor o resultado final que necessita, conforme exemplo:

    select new { loc.ID_CIDADE, cid.ID_MUNICIPIO };


    Diego Cotini do Couto - MCTS .NET Framework 3.5, ASP.NET Applications

    quarta-feira, 16 de outubro de 2013 19:46
  • Acredito que se você não colocar o select ele traz tudo.
    quarta-feira, 16 de outubro de 2013 19:49
  • Testa ai mano,

                var data = (from loc in local.SEG_LOCAL_TRABALHO
                            join cid in local.CAD_MUNICIPIO
                            on loc.ID_CIDADE equals cid.ID_MUNICIPIO
                            select new { loc.SeuCampo, loc.SeuOutroCampo, cid.MaisUmCampo }).ToList();
    
                bindingSource1.DataSource = data;
    
                dataGridView1.DataSource = bindingSource1;


    Diego Almeida Barreto



    quarta-feira, 16 de outubro de 2013 19:54
  • segue ex:

    List<Pessoa> lista = new List<Pessoa>();
                lista.Add(new Pessoa(1, "rafael"));
                lista.Add(new Pessoa(2, "ze"));
                lista.Add(new Pessoa(3, "joao"));
                lista.Add(new Pessoa(4, "miguel"));
                lista.Add(new Pessoa(5, "fatima"));
                lista.Add(new Pessoa(6, "eli"));
    
                List<Sala> listaSala = new List<Sala>();
                listaSala.Add(new Sala("TURMA A", 1));
                listaSala.Add(new Sala("TURMA B", 2));
                listaSala.Add(new Sala("TURMA A", 3));
                listaSala.Add(new Sala("TURMA A", 4));
                listaSala.Add(new Sala("TURMA B", 5));
                listaSala.Add(new Sala("TURMA C", 6));
    
                var teste = (from tb1 in lista
                             from tb2 in listaSala
                             where tb1.Id == tb2.IdAluno
                             select new { ID_ALUNO = tb1.Id, NOME_ALUNO = tb1.Nome, TURMA = tb2.DescrSala }).ToList();


    --Rafael Albuquerque

    quarta-feira, 16 de outubro de 2013 19:57
  • Na verdade o meu objetivo é de não precisar especificar os campos, eu quero que o resultado seja como no próprio sql server:

    SLEECT * FROM CAD_CIDADE A JOIN CAD_SEG B

    ON A.ID_CIDADE = B.ID_CIDADE


    Leonardo Jacques da Silva Desenvolvedor .net

    quarta-feira, 16 de outubro de 2013 20:02
  • Se não usar select dá erro

    Leonardo Jacques da Silva Desenvolvedor .net

    quarta-feira, 16 de outubro de 2013 20:02
  • Na verdade o meu objetivo é de não precisar especificar os campos, eu quero que o resultado seja como no próprio sql server:

    SLEECT * FROM CAD_CIDADE A JOIN CAD_SEG B

    ON A.ID_CIDADE = B.ID_CIDADE


    Leonardo Jacques da Silva Desenvolvedor .net

    quarta-feira, 16 de outubro de 2013 20:03
  • não consegui encontrar nada do tipo, apenas utilizando o foreach ... rs

    --Rafael Albuquerque

    quarta-feira, 16 de outubro de 2013 20:34
  • Até onde EU sei, se vc vai trabalhar com Anonymous type terá que passar coluna por coluna, posso estar errado !!!!!!!!!!

    Diego Almeida Barreto


    quarta-feira, 16 de outubro de 2013 20:44
  • Concordam que nao faz muito sentido no meu ponto de vista, imagina que vou ter umas 20 telas de cadastro, todas eu em algum momento vou usar os dados em uma gridview onde tenho relacionamento com outras tabelas, imagina o trabalho se eu tiver que escrever coluna por coluna.

    vou continuar buscando mais informacoes, caos encontrem postem...

    abracao


    Leonardo Jacques da Silva Desenvolvedor .net

    quarta-feira, 16 de outubro de 2013 23:56
  • Acredito  que não seria muito performático trazer todas as colunas das tabelas, mas se vc quer trazer todas as colunas de uma forma "fácil" monta a sua query SQL e joga  dentro de uma stored Procedure.


    Diego Almeida Barreto
    System Analyst / Software Developer





    quinta-feira, 17 de outubro de 2013 02:02
  • Você também pode montar uma terceira classe com todos os dados de seu select all como esta aqui

    http://stackoverflow.com/questions/16871183/lambda-inner-join-and-select-all

    quinta-feira, 17 de outubro de 2013 02:06