Mam listę zawierającą kilka ciągów, które mogą wystąpić więcej niż jeden raz. Chciałbym wziąć tę listę i zbudować słownik elementów listy jako klucz i liczbę ich wystąpień jako wartość.Budowanie słownika liczby elementów na liście
Przykład:
List<string> stuff = new List<string>();
stuff.Add("Peanut Butter");
stuff.Add("Jam");
stuff.Add("Food");
stuff.Add("Snacks");
stuff.Add("Philosophy");
stuff.Add("Peanut Butter");
stuff.Add("Jam");
stuff.Add("Food");
a wynik byłby słownik zawierający:
"Peanut Butter", 2
"Jam", 2
"Food", 2
"Snacks", 1
"Philosophy", 1
Mam sposób to zrobić, ale nie wydaje się, jakbym wykorzystując dobre rzeczy w C# 3,0
public Dictionary<string, int> CountStuff(IList<string> stuffList)
{
Dictionary<string, int> stuffCount = new Dictionary<string, int>();
foreach (string stuff in stuffList) {
//initialize or increment the count for this item
if (stuffCount.ContainsKey(stuff)) {
stuffCount[stuff]++;
} else {
stuffCount.Add(stuff, 1);
}
}
return stuffCount;
}
Jak byś dodać orderby do pierwszego przykładu? – zadam
@zadam Zawsze możesz powiedzieć: 'groups = groups.OrderBy (g => g.Stuff)'; – casperOne