Usuário com melhor resposta
Consulta LInq ou Lambda em tabelas relacionadas

Pergunta
-
Tenho 2 tabelas relacionadas, clientes e pedidos.Preciso fazer uma consulta
linq
oulambda
em pedidos e preencher umDataGrid
dinamicamente. Em uma das colunas exibir o nome do cliente dinamicamente. Como devo proceder ?.namespace DAL.MODEL { public class Cliente { public int Id { get; set; } public string Nome { get; set; } public virtual ICollection<Pedido> PedidoX { get; set; } } } namespace DAL.MODEL { public class Pedido { public int Id { get; set; } public Decimal Total { get; set; } public int ClienteId { get; set; } public virtual Cliente ClienteX { get; set; } } } public void CarregarGrid() { try { Contexto ctx = new Contexto(); var lista = from c in ctx.PedidoCtx.Include(c => c.ClienteX) select c; dgvPesquisar.DataSource = lista.ToList(); dgvPesquisar.Columns["pedido"].DataPropertyName = "Id"; dgvPesquisar.Columns["cliente"].DataPropertyName = "ClienteX.Nome"; } catch (Exception) { throw; } }
Respostas
-
Bom dia,
basta adicionar mais uma tabela:
itens = Db.Cliente .Join(Db.Pedido, cliente => cliente.Id, pedido => pedido.IdCliente, (cliente, pedido) => new { pedido, cliente }) .Join(Db.Produto, cliente => cliente.cliente.Id, produto => produto.IdCliente, (cliente, produto) => new { cliente, produto }) .Select(i => i.cliente.cliente.Nome) .ToList();
Existe o Include sim, segue link Include Entity Framework . Não uso include para consultas sql prefiro fazer dessa maneira conforme exemplo...
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 4 de junho de 2018 14:45
Todas as Respostas
-
Boa tarde,
Veja se isso lhe ajuda:
itens = ctx.Cliente .Join(ctx.Pedido, cliente => cliente.Id, pedido => pedido.IdCliente, (cliente, pedido) => new { pedido, cliente }) .Select(i => i.cliente.Nome) .ToList();
No "select" pode selecionar quaisquer colunas de ambas as tabelas. Dê uma olhada nesse link para mais informações:
- Sugerido como Resposta Lucio Rogerio SPBanned quinta-feira, 24 de maio de 2018 18:42
-
Olá Daniel. Obrigado pela ajuda.
Sua orientação deu certo. Consegui realizar a consulta. Mas agora tenho um cenário um pouco mais complicado. Existe uma terceira tabela que são os itens dos pedidos, ou seja, os produtos que são adicionados ao pedido. Num outro momento preciso consultar os pedidos, o cliente e os produtos. Como poderia adaptar a consulta a este cenário ?. A propósito, li que existe o método include que me pareceu ter uma sintaxe mais simples ou já teria um join embutido. Procede ?. Muito Obrigado.
-
Bom dia,
basta adicionar mais uma tabela:
itens = Db.Cliente .Join(Db.Pedido, cliente => cliente.Id, pedido => pedido.IdCliente, (cliente, pedido) => new { pedido, cliente }) .Join(Db.Produto, cliente => cliente.cliente.Id, produto => produto.IdCliente, (cliente, produto) => new { cliente, produto }) .Select(i => i.cliente.cliente.Nome) .ToList();
Existe o Include sim, segue link Include Entity Framework . Não uso include para consultas sql prefiro fazer dessa maneira conforme exemplo...
- Marcado como Resposta Filipe B CastroModerator segunda-feira, 4 de junho de 2018 14:45