Lo podes hacer con linq utilizando el operador group by.
Pero vas a necesitar crearte una lista de tipo clase.
Tengo un articulo donde explico como usar el group by
Agrupar Datos Linq (GroupBy) C# - VB.Net
En tu caso también tendrias que usar el operador count algo así.
Código c#:
Ver originalpublic class Color
{
public string Color{ get; set; }
public Persona(string col)
{
Color = col;
}
}
List<Color> colores = new List<Color>
{
new Color("Rojo"),
new Color("Rojo"),
new Color("Amarillo"),
new Color("Amarillo")
};
Ahi tendrias algunos registros ahora aplicas linq.
Código c#:
Ver originalvar query = colores.GroupBy(c => c.Color,
(numcolor) => new
{
Color = numcolor.Count()
});
Como veras primero agrupas los datos con groupby y luego usas count para contarlos, no he probado el código lo he puesto sin probarlo pero creo que te tendría que funcionar.