2017-01-09 1 views
3
List<string> testList = new List<string>(); 
testList.Add("A"); 
testList.Add("A"); 
testList.Add("C"); 
testList.Add("d"); 
testList.Add("D"); 

Cette requête est sensible à la casse:Obtenez les doublons de la liste insensible à la casse

// Result: "A" 
List<String> duplicates = testList.GroupBy(x => x) 
            .Where(g => g.Count() > 1) 
            .Select(g => g.Key) 
            .ToList(); 

Quelle serait insensible à la casse? (Résultat: "A", "d")

Répondre

7

En utilisant la mise en œuvre de la surchargeGroupBy où vous pouvez fournir le comparateur nécessaire, par exemple StringComparer.OrdinalIgnoreCase:

var result = testList 
    .GroupBy(item => item, StringComparer.OrdinalIgnoreCase) 
    .Where(g => g.Count() > 1) 
    .Select(g => g.Key) 
    .ToList(); 
3

En remplaçant

.GroupBy(x => x) 

avec

.GroupBy(x => x.ToLower()) 

vous tourner tous les éléments string en minuscules et le boîtier de groupe insensible.

1
var result = testList.GroupBy(x => x.ToLower()) 
            .Where(g => g.Count() > 1) 
            .Select(g => g.Key) 
            .ToList();