Array
(
)

Inner join com linq(entity framwork)

Wellyngton Borges.
   - 07 mai 2014

Ola,
Quero fazer um select que retorne num datagridview o inner join entre 3 tabelas sendo elas, Emprestimo(principal), Livro e Aluno, na Emprestimo eu tenho os campos ID_livro e ID_Aluno e quero trazer no grid ao inves dos ID`s o nome do livro e o nome do aluno!
vlw,
Abrass

Wellyngton Borges.
   - 07 mai 2014

Vlw jair, mas eu estou usando LINQ e é diferente do metodo comun. vlw mesmo!

Paulo Freire
|
MVP
    08 mai 2014

Vamos lá:

Dados_Entity db = new Dados_Entity();

int wQuartel = Convert.ToInt16(dpQuarteis.SelectedValue);

var pesquisa = from p in db.PATRIMONIO

join i in db.SECAO
on p.ID_SECAO equals i.ID

join d in db.DEPARTAMENTOS
on p.ID_DEPARTAMENTO equals d.ID

where p.ID_SECAO == wQuartel
orderby p.DESCRICAO
select new
{
p.ID,
p.DESCRICAO,
p.MARCA,
d.DEPARTAMENTO
};
var resultado = pesquisa.FirstOrDefault(x => true);

if (resultado != null)
{
gbBens.DataSource = pesquisa.ToList();
gbBens.DataBind();
}
else
{
gbBens.DataSource = null;
gbBens.DataBind();
lblMensagem.Text = "Nenhum Bem Patrimonial cadastrado para esse Quartel Regional - CMSE";
}

Paulo Freire
|
MVP
    08 mai 2014

Simplificando

Dados_Entity db = new Dados_Entity();

var pesquisa = from e in db.EMPRESTIMOS

join l in db.LIVROS
on e.ID_LIVRO equals l.ID

join a in db.ALUNOS
on e.ID_ALUNO equals a.ID

orderby e.DATA_EMPRESTIMO
select new
{
e.ID,
e.DATA_EMPRESTIMO,
e.DATA_DEVOLUCAO,
a.NOME_ALUNO,
a.TEL_ALUNO,
l.NOME_LIVRO

};
var resultado = pesquisa.FirstOrDefault(x => true);

if (resultado != null)
{
GridView_Livros.DataSource = pesquisa.ToList();
GridView_Livros.DataBind();
}
else
{
GridView_Livros.DataSource = null;
GridView_Livros.DataBind();
lblMensagem.Text = "Não tem livros em Emprestimos";
}

Beleza, Shalom Adonai

Elessandro Poças
   - 08 mai 2014

Wellington

Eu utilizo da seguinte forma:

using (var ctx = new seuEntityCriado())
{

var consultaEmprestimo = from e in seucontexto.Emprestimo
where "algum parâmetro"
orderby e.Aluno.AlunoNome
Select new
{
e.Emprestimo.ID,
e.Aluno.AlunoNome,
e.Livro.LivroNome,
};
dgvConsultaEmprestimo.DataSource = consultaEmprestimo.ToList();

}

Pois você não precisa fazer um JOIN, pois o Enity Framework já faz isso para vc. Pois quando vc cria um contexto de uma determinada tabela do banco de dados ele já traz todos os relacionamentos da mesma.