2014-09-05 23 views
15

Mam dwie listy i chcę je porównać i uzyskać różnice, ignorując różnice między poszczególnymi przypadkami.Lista Porównanie "z wyjątkiem" - ignorowanie przypadku

Użyłem następującego kodu, aby uzyskać różnice między tymi dwoma listami, ale nie ignoruje to różnic w wielkości liter.

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

Próbowałem to:

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

ale wyjątkiem nie wydaje się mieć ciąg znaków sprawdzenie tego rodzaju błędów (tak). Mam nadzieję, że jest coś do zrobienia.

+4

To powinno być prawdopodobnie 'StringComparer', a nie' StringComparison'. Zwróć uwagę na typy ... –

+0

Zobacz przeciążenie [z wyjątkiem] (http://msdn.microsoft.com/library/bb336390.aspx) za pomocą [IEqualityComparer] (http://msdn.microsoft.com/library/ ms132151.aspx). Jak powiedział @JeffMercado, można już znaleźć kilka 'IEqualityComparer ' pod [StringComparer] (http://msdn.microsoft.com/library/system.stringcomparer.aspx) – Corak

+0

Dzięki wszystkim :) Nie mogę uwierzyć, że zrobiłem 't spróbuj 'StringComparer'. – john

Odpowiedz

4

Oto co pracował:

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

String comparer zamiast porównania.

23

Spróbuj :)

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

pracował dla mnie!

+1

Dzięki. Mam już odpowiedź, ale to jest czystsze. :) – john