Returns a Dictionary with the unique values of a collection as keys and their frequencies as the values.

Use IEnumerable.GroupBy() to create groups for each distinct value in the collection.
Use IEnumerable.ToDictionary() to convert the result of the previous operation to a Dictionary.


using System.Collections.Generic;
using System.Linq;

public static partial class _30s 
  public static Dictionary<T,int> Frequencies<T>(IEnumerable<T> values)
    return values
      .GroupBy(v => v)
      .ToDictionary(v => v.Key, v => v.Count());


char[] c = {'a', 'b', 'a', 'c', 'a', 'a', 'b'}; 

_30s.Frequencies(c); // { [a, 4], [b, 2], [c, 1] }