using System.Collections.Generic;
public static void Main()
var characterCounts = "Babba-baa, babba ba-ram.".GetCharacterCounts();
foreach(var characterCount in characterCounts)
Console.WriteLine(characterCount.ToString());
public class CharacterCount
public char Character { get; set; }
public int Count { get; set; }
public override string ToString()
return String.Format("Character: {0}, Count: {1}", this.Character, this.Count.ToString());
public static class StringExtensions
public static IEnumerable<CharacterCount> GetCharacterCounts(this string str)
var allChars = str.ToCharArray(0, str.Length);
var distinctChars = allChars.Distinct()
.Select(c => new CharacterCount{ Character = c, Count = 0})
foreach(var dc in distinctChars)
foreach(var c in allChars)