Neste artigo vou falar um pouco de como trabalhar com Case-Insensitive em Listas, como havia combinado no artigo anterior.
O outro método utilitário desta classe é CollectionsUtil.CreateCaseInsensitiveSortedList(). Então ele é o usado para lista case insensitive ?? Não, ele é usado para criar um SortedList que na verdade é um Hashtable e que ordena as entradas pelo valor das chaves :S Estranho, não!? Esse nome realmente não é sugestivo, pois não se trata de uma lista ordenada, mas SortedList é assunto para outro post, vamos ao que interessa!
Busca Case-Insensitive em ArrayList.
Vamos criar um método estático que recebe um ArrayList, um string para ser buscada e então retorna true se a string existir e false se não existir, considerando a comparação Case-Insensitive:
public static bool ContemValor(string valor, ArrayList lista)
{
ArrayList aux = new ArrayList(lista);
aux.Sort();
return (aux.BinarySearch(valor, StringComparer.InvariantCultureIgnoreCase) >= 0);
}
Outra opção é estender a classe ArrayList e sobrescrever o método Contains, segue a implmentacão:
public class ListaCaseInsensitive : ArrayList{
public override bool Contains(object item)
{ArrayList aux = new ArrayList(lista);
aux.Sort();return (aux.BinarySearch(valor, StringComparer.InvariantCultureIgnoreCase) ;
}
Para a inserção essa operação não faz sentido pois se fossémos verificar se um valor, case-insensitive ou não, existe em uma lista antes de inserí-lo na mesma essa lista passaria a ser um tipo de Conjunto, o qual, diferentemente de uma lista, não possui elementos repetidos.
Espero ter colaborado, se esse assunto te interessou faça um comentário!
0 comentários:
Postar um comentário