C# – Trabalhando com listas, como usar o “Find”
Olá pessoal.
Vou falar um pouco de listas, mais especificamente, em como usar os “Finds” das listas em C#.
Normalmente, quando não conhecemos ou não sabemos usar o “Find” em uma lista, acabamos percorrendo a lista todas com um laço, como “For” ou “While”.
O básico
Digo básico, quando recém estamos aprendendo os segredos da programação e não conhecemos todos métodos e funções.
Na realidade, não existe alguém que conheça tudo, pois todos os comandos, funções, procedimentos, métodos, etc… são praticamente infinitos.
Mas o que é básico? Se não sabemos que existe o Find, usamos um laço de repetição para percorrer uma lista e retornar os valores que queremos, como no exemplo abaixo:
// Quando queremos filtrar a lista for (int contador = 0; contador < lista1.count; contador++) { if (lista1[contador].Contains("Paulo") { lista2.add(lista1[contador]); } } // Quando queremos um valor especifico for (int contador = 0; contador < lista1.count; contador++) { if (lista1[contador].Contains("Paulo") { resultado = lista1[contador]; break; } }
O primeiro exemplo percorre toda a “lista1” e para cada valor encontrado no “If”, ele adiciona na “lista2”. Assim, a “lista2” conterá todos os resultados filtrados da “lista1”.
Enquanto que no segundo exemplo, ao percorrer a “lista1” e o código entrar no “if”, gravamos o valor da “lista1” para a variável “resultado” e logo após executamos o “break” para encerrar o “for”.
O “Find”
O “Find” é um método da classe “List<>”, usado para retornar registros, valores ou índices de uma lista.
Ele é muito mais fácil e rápido de usar do que um laço de repetição, pois você define um filtro e ele te retorna todos resultados baseado nesse filtro.
Mas como funciona Pulllga? Vamos a um exemplo, usando como base a ideia do exemplo anterior:
// Quando queremos filtrar a lista lista2 = lista1.FindAll(x => x.Contains("Paulo")); // Quando queremos um valor especifico resultado = lista1.Find(x => x.Contains("Paulo"));
Vejam que os dois exemplos fazem a mesma coisa, mas de forma mais simples.
Com “FindAll” retornamos uma lista com todos resultados do filtro da “lista1”. E com “Find” retornamos o primeiro registro encontrado na “lista1”.
Nos parâmetros, precisamos definir o “x”, que pode ser qualquer nome, o “x” é a referência a função de filtro da lista, então, deixemos por “x”.
Depois colocamos o sinal de “=>”, indicando que após o “x”, executaremos alguma operação com ele.
Neste caso, usamos a mesma operação do primeiro exemplo com laços e “if”, dessa forma temos “x.Contains(“Paulo”)”, onde poderíamos ter, por exemplo, “x == “Paulo””.
Conclusão
Como vocês podem ver, o “Find” de uma lista é muito simples de ser usado, poupa tempo e simplifica muito nosso código.
Dúvidas? Dicas? Escrevam nos comentários.
Abraço
Se eu quiser usar um find que daria o mesmo retorno de fosse uma cláusula where do tipo ” where campo1 = 2 and campo2 like ‘%qualquer coisa%’ “????
Att
Tiãozinho