none
Como fazer uma consulta linq com 3 classes/tabelas? RRS feed

  • Pergunta

  • Pessoal,

    Tenho 3 classes: Pessoa, Contato (Telefones) e TipoContato (No campo "Descricao": Principal, Celular, etc) e gostaria de exibir apenas o telefone "Principal"

    O método abaixo retorna a Pessoa em questão:

    Pessoa objPessoa = (from pessoa in dataContext.GetTable<Pessoa>
          where pessoa.Nome.Contains(<parametro>)
          select paciente).FirstOrDefault();
    

    Na tela quero exibir o Contato "Principal", como abaixo:

     

    txtContato.Text = objPessoa.Contatos.Select(x => x.DescricaoContato).where( x => x.Contatos.tipoContato.DescricaoContato.Equals("Principal"))
    

     

     

    Porém, no where, o x não localiza o Contatos, ou seja, não é uma atribuição implícita.

    Enfim, alguém sabe como ficaria este select?

    segunda-feira, 21 de junho de 2010 20:42

Respostas

  • tenta assim:

    txtContato.Text = objPessoa.Contatos.Where(x=> x.TipoContato.DescricaoContato.Contains("Principal"));

     

     


    Elvis Rodrigues
    Analista Desenvolvedor .Net
    MCP .Net Framework 2.0, MCTS SQL Server 2005
    foxelv@hotmail.com
    • Marcado como Resposta BrunoCosta.dsn sexta-feira, 13 de agosto de 2010 22:10
    sexta-feira, 13 de agosto de 2010 20:11
  • Olá,
    Vc vai precisar fazer algo parecido com isso

    Pessoa objPessoa = (from pessoa in dataContext.GetTable<Pessoa>
       where pessoa.Nome.Contains(<parametro>)
       select new Pessoa()
       {
          Pessoa.Nome = pessoa.Nome
          Pessoa.Contato = pessoa.TB_CONTATO,
          Pessoa.Contato.TipoContato = pessoa.TB_CONTATO.  TB_TIPO_CONTATO
       }).FirstOrDefault();
    
    Att,
    Anderson
    • Marcado como Resposta BrunoCosta.dsn sexta-feira, 13 de agosto de 2010 22:10
    sexta-feira, 13 de agosto de 2010 22:04

Todas as Respostas

  • Cara da onde saiu o "paciente" do select paciente no seu linq?
    Adriel Codeco Silva Microsoft Partner http://adrielcodeco.wordpress.com www.uppercase.com.br adrielcodeco@hotmail.com
    terça-feira, 22 de junho de 2010 00:41
    Moderador
  • tenta assim:

    txtContato.Text = objPessoa.Contatos.Where(x=> x.TipoContato.DescricaoContato.Contains("Principal"));

     

     


    Elvis Rodrigues
    Analista Desenvolvedor .Net
    MCP .Net Framework 2.0, MCTS SQL Server 2005
    foxelv@hotmail.com
    • Marcado como Resposta BrunoCosta.dsn sexta-feira, 13 de agosto de 2010 22:10
    sexta-feira, 13 de agosto de 2010 20:11
  • Olá,
    Vc vai precisar fazer algo parecido com isso

    Pessoa objPessoa = (from pessoa in dataContext.GetTable<Pessoa>
       where pessoa.Nome.Contains(<parametro>)
       select new Pessoa()
       {
          Pessoa.Nome = pessoa.Nome
          Pessoa.Contato = pessoa.TB_CONTATO,
          Pessoa.Contato.TipoContato = pessoa.TB_CONTATO.  TB_TIPO_CONTATO
       }).FirstOrDefault();
    
    Att,
    Anderson
    • Marcado como Resposta BrunoCosta.dsn sexta-feira, 13 de agosto de 2010 22:10
    sexta-feira, 13 de agosto de 2010 22:04