Usuário com melhor resposta
Como trabalhar com EntityColletion

Pergunta
-
Olá.No meu projeto eu tenho uma entidade que possui um EntityColletion e eu quero filtrar essa coleção.Por exemplo, faço um LINQ que traz um cliente, e nesse cliente eu tenho um EntityColletion com todos os pedidos do cliente. Quero filtrar alguns pedidos, isso é possível?Obrigado.
Marcos Aguiar Jr - Brazil
Respostas
-
Marcos,
Sim, é possivel.
Você pode fazer desta maneira:
var cliente = (from c in MeuDomainEntity.Clientes.Include("Pedidos") where c.Id == 1 select c).FirstOrDefault(); //Agora filtrando os pedidos var pedidosFiltrados = from p in cliente.Pedidos where p.Valor > 100 select p;
Se ajudar não se esqueça de marcar como resposta.
Epero ter ajudado. Qualquer dúvida favor entrar em contato.
Douglas Aguiar
MCAD, MCT- Sugerido como Resposta Douglas Aguiar sexta-feira, 6 de novembro de 2009 11:05
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
-
Marcos,
Você pode fazer da seguinte maneira:var clientes = from p in MeuDomainEntity.Pedidos where p.Cliente.CIDADE.CD_CODIGOCIDADE == 1 && p.Valor > 100 group p by p.Cliente into c select c;
A clausula groupby deve ajuda-lo, noa testei a query, me avise se der algum problema.
Veja este link sobre groupby e sobre linq:
http://msdn.microsoft.com/en-us/vcsharp/aa336754.aspx#simple1
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
Se ajudar não se esqueça de marcar como resposta.
Epero ter ajudado. Qualquer dúvida favor entrar em contato.
Douglas Aguiar
MCAD, MCT- Sugerido como Resposta Douglas Aguiar sexta-feira, 6 de novembro de 2009 18:16
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
Todas as Respostas
-
Marcos,
Sim, é possivel.
Você pode fazer desta maneira:
var cliente = (from c in MeuDomainEntity.Clientes.Include("Pedidos") where c.Id == 1 select c).FirstOrDefault(); //Agora filtrando os pedidos var pedidosFiltrados = from p in cliente.Pedidos where p.Valor > 100 select p;
Se ajudar não se esqueça de marcar como resposta.
Epero ter ajudado. Qualquer dúvida favor entrar em contato.
Douglas Aguiar
MCAD, MCT- Sugerido como Resposta Douglas Aguiar sexta-feira, 6 de novembro de 2009 11:05
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40
-
Olá Douglas, obrigado pela resposta.Sua solução é muito boa, porém imagine a seguinte situação.
var varCliente = (from c in MeuDomainEntity.Clientes.Include("Pedidos") where c.CIDADE.CD_CODIGOCIDADE == 1 select c).FirstOrDefault();
Agora eu tenho um objeto varCliente com todos os clientes da cidade 1 e com seus pedidos relacionados.Suponha agora que desses clientes eu só quero pegar os clientes que já fizeram um Pedido com um valor acima de 100 reais, veja não me importa o pedido como informação.Entendeu a situação?Obrigado.
Marcos Aguiar Jr - Brazil -
Marcos,
Você pode fazer da seguinte maneira:var clientes = from p in MeuDomainEntity.Pedidos where p.Cliente.CIDADE.CD_CODIGOCIDADE == 1 && p.Valor > 100 group p by p.Cliente into c select c;
A clausula groupby deve ajuda-lo, noa testei a query, me avise se der algum problema.
Veja este link sobre groupby e sobre linq:
http://msdn.microsoft.com/en-us/vcsharp/aa336754.aspx#simple1
http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
Se ajudar não se esqueça de marcar como resposta.
Epero ter ajudado. Qualquer dúvida favor entrar em contato.
Douglas Aguiar
MCAD, MCT- Sugerido como Resposta Douglas Aguiar sexta-feira, 6 de novembro de 2009 18:16
- Marcado como Resposta AndreAlvesLimaModerator terça-feira, 13 de julho de 2010 22:40