Publicidade

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

One Comment

  • SebastiãoJosé da Rocha disse:

    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

Deixe um comentário

O seu endereço de e-mail não será publicado.