2016-03-30 5 views
1

Ich habe eine Liste von Strings mit mehreren Einträgen mit dem gleichen Wert. Ich muss alle eindeutigen Elemente in der Liste sowie die Anzahl jeder eindeutigen Elementgruppe erhalten. Zum Beispiel:C# Gruppiere eine Liste und erhalte die Anzahl jeder Gruppe

 string a = "cat"; 
     string b = "dog"; 
     string c = "cat"; 
     string d = "horse"; 

     List<string> list = new List<string>(); 

     list.Add(a); 
     list.Add(b); 
     list.Add(c); 
     list.Add(d); 

Ich brauche diese Daten: "cat" - 2 "Hund" - 1 "Pferd" - 1

+0

Mit Linq, schauen Sie sich die Erweiterungsmethode GroupBy an. z.B. list.GroupBy (x => x) –

Antwort

2

Sie benötigen einen GroupBy zu tun:

var result=list.GroupBy(s=>s).Select(g=>new{Animal=g.Key, Count=g.Count()}); 
foreach(var e in result) 
    Console.WriteLine("{0}--{1}",e.Animal,e.Count); 

Wenn Sie möchten, können Sie das gleiche tun Sie den Aufruf der Select Erweiterungsmethode zu entfernen:

var result=list.GroupBy(s=>s); 
foreach(var g in result) 
    Console.WriteLine("{0}--{1}",g.Key,g.Count()); 
0
List<string> list = new List<string>() { "cat", "dog", "cat", "horse" }; 
var groupedResult = list.GroupBy(x => x).Select(y=> new{item = y.Key , count=y.Count()}) ; 
Verwandte Themen