2014-09-05 9 views
15

Ho due elenchi e voglio confrontarli e ottenere le differenze, ignorando le differenze tra maiuscole e minuscole.Elenco Confronto 'Eccetto' - ignora il caso

Ho usato il seguente codice per ottenere le differenze tra i due elenchi ma non ignora le differenze tra maiuscole e minuscole.

IEnumerable<string> diff = list1.Except(list2); 
List<string> differenceList = diff.ToList<string>(); 

ho provato questo:

IEnumerable<string> diff = list1.Except(list2, StringComparison.OrdinalIgnoreCase); 

ma Salvo non sembra essere avere un caso stringa di controllo del genere (così errore). Spero che ci sia un lavoro in giro.

+4

Questo dovrebbe probabilmente essere un 'StringComparer', non' StringComparison'. Prestare attenzione ai tipi ... –

+0

Vedere l'overload [eccetto] (http://msdn.microsoft.com/library/bb336390.aspx) con un [IEqualityComparer] (http://msdn.microsoft.com/library/ ms132151.aspx). Come ha detto @JeffMercado, è già possibile trovare 'IEqualityComparer ' in [StringComparer] (http://msdn.microsoft.com/library/system.stringcomparer.aspx) – Corak

+0

Grazie a tutti :) Non posso credere di non averlo 'prova con 'StringComparer'. – john

risposta

4

Ecco cosa ha funzionato:

IEnumerable<string> differenceQuery = inputTable.Except(strArrList, StringComparer.OrdinalIgnoreCase);

stringa di confronto invece di confronto.

23

Prova questo :)

List<string> except = list1.Except(list2, StringComparer.OrdinalIgnoreCase).ToList(); 

lavorato per me!

+1

Grazie. Ho già la risposta, ma questo è più pulito. :) – john

Problemi correlati