Ho una lista testList
che contiene un gruppo di stringhe. Vorrei aggiungere una nuova stringa nello testList
solo se non esiste già nell'elenco. Pertanto, ho bisogno di fare una ricerca senza distinzione tra maiuscole e minuscole della lista e renderla efficiente. Non posso usare Contains
perché questo non tiene conto dell'involucro. Inoltre, non desidero utilizzare ToUpper/ToLower
per motivi di prestazioni. Mi sono imbattuto in questo metodo, che funziona:Ricerca elenco senza distinzione tra maiuscole e minuscole
if(testList.FindAll(x => x.IndexOf(keyword,
StringComparison.OrdinalIgnoreCase) >= 0).Count > 0)
Console.WriteLine("Found in list");
Questo funziona, ma corrisponde anche alle parole parziali. Se la lista contiene "goat", non posso aggiungere "avena" perché afferma che "avena" è già presente nell'elenco. Esiste un modo per cercare in modo efficiente gli elenchi in un modo maiuscole e minuscole, in cui le parole devono corrispondere esattamente? grazie
solo aggiungere, in alcuni test rapidi, sembra che il primo metodo è più veloce di circa il 50%. Forse qualcun altro può confermarlo/negarlo. – Brap
A partire da .NET 2.0, questo è ora fatto facilmente - guarda la risposta di shaxby qui sotto. – Joe
Il metodo Contains Il riferimento a shaxby (che ha un overload che prende un IEqualityComparer) fa parte di LINQ, quindi non è certamente disponibile da .NET 2.0. Solo la classe StringComparer è in circolazione da un po 'di tempo. L'elenco non ha questo metodo, né ArrayList o StringCollection (cose a cui avrebbe potuto facilmente fare riferimento come "elenco"). –