Usuário com melhor resposta
Como filtrar uma coleção só com os dados que existem em outra coleção

Pergunta
-
Respostas
-
Olá Gustavo,
Caso vc esteja utilizando LINQ to Entities, vc pode fazer assim:
pessoas.Where(p => (funcionarios.Where(f => f.Idade == p.Idade).Count() > 0))
* Retorna as pessoas cuja idade também existe na lista de funcionários.
Se estiver utilizando LINQ to Sql ou EF, utilize o Join, pois será mais performático.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Marcado como Resposta Gustavo Binnie quarta-feira, 21 de setembro de 2011 16:53
Todas as Respostas
-
Não sei se entendi muito bem, mais seria apenas para trazer as data aonde as mesma estiveram na outra lista e alterar a fonte original, pode utiliza join, veja este exemplo:
List<string> cores = new List<string>() { "Verde", "Vermelho", "Rosa" }; List<string> coresComparar = new List<string>() { "Verde", "Vermelho", "Amarelo", "Azul", "Roxo" }; cores = (from c in cores join cj in coresComparar on c equals cj select c).ToList();
No final só vai me retorna as cores Verde e Vermelho
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
-
Então Gustavo para sua explicação nao veja outra maneira a naoser fazer o join neste duas listas e usa a propriedade Data para comparação:
class MinhaClasse { public DateTime Data { get; set; } }
List<MinhaClasse> lista1 = new List<MinhaClasse>() { new MinhaClasse(){ Data = Convert.ToDateTime("19/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("18/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("17/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("16/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("15/09/2011")} }; List<MinhaClasse> lista2 = new List<MinhaClasse>() { new MinhaClasse(){ Data = Convert.ToDateTime("01/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("02/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("03/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("16/09/2011")}, new MinhaClasse(){ Data = Convert.ToDateTime("15/09/2011")} }; var resultado = (from l1 in lista1 join l2 in lista2 on l1.Data equals l2.Data select l1).ToList();
No código acima, teramos apenas as datas 16/05/2011 e 15/06/2011 pois elas existem na lista 1 e 2
Vitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
Vitor,
E se a lista 1 tiver objetos do tipo A e a lista 2 tiver objetos do tipo B. Ambos os tipos, A e B, contém uma propriedade do tipo DateTime, mas o restante de suas propriedades são distintas. Dessa forma, não sei se fazer um join seria melhor solução. Afinal quero manter os objetos do tipo A na lista 1 que tem propriedades DateTime que existam na propriedade do tipo B da lista 2.
-
Olá Gustavo,
Caso vc esteja utilizando LINQ to Entities, vc pode fazer assim:
pessoas.Where(p => (funcionarios.Where(f => f.Idade == p.Idade).Count() > 0))
* Retorna as pessoas cuja idade também existe na lista de funcionários.
Se estiver utilizando LINQ to Sql ou EF, utilize o Join, pois será mais performático.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique- Marcado como Resposta Gustavo Binnie quarta-feira, 21 de setembro de 2011 16:53