Verificando se um elemento exista na lista. (C#/.NET)

Neste post mostro como verificar se um elemento existe em uma lista (List<T>). A forma é simples, mas é exclusiva para as listas. (Apesar de que, tem como fazer a mesma coisa com vetores também, só não é eficaz em termos de performance…)

Para este exemplo, considere a lista abaixo:

 

Utilizando IndexOf

Agora queremos ver se as strings “bacon” e “salad” existem na lista myStrList…

No código acima, a variável indexBacon vai receber o valor 2 (que é a posição da string bacon na lista) e a variável indexSalad vai receber -1, pois esta string não consta na lista.

 

Sendo assim, podemos utilizar o metodo acima para verificar se um determinado elemento existe ou não na lista…

Neste código temos o exemplo de como verificar. Se o retorno da função IndexOf for maior que ou igual a zero (pois o C# é base zero), então o item existe. Se retornar -1, não existe.

 

Mas e se você possuir um vetor (array) ao invés de lista?

Para utilizar esta mesma lógica em um vetor, primeiro você precisará convertê-lo para lista. Todavia, imagino que esta não seja uma opção muito boa em termos de performance, especialmente se você estiver com uma lista muito grande.

 

Utilizando Linq

De forma alternativa, você também pode utilizar o Linq para descobrir se o elemento existe na lista.

No código acima, a variável searchBacon possui o valor “bacon”, pois este elemento existe na lista e você o selecionou (usando linq). Já a variável searchSalad está definida como null, pois o elemento não existe.

 

Para este caso, como o tipo de resposta é diferente, podemos padronizar utilizando um operador ternário:

Com esta expressão, se o item for encontrado, a variável found vai receber o valor 1. Caso contrário, receberá -1.

 

Espero ter ajudado!

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in .Net, Dev and tagged , , .