using System.Collections.Generic;
public static void Main()
new { Col1 = "A", Col2 = "X", Value = 10 },
new { Col1 = "A", Col2 = "Z", Value = 15 },
new { Col1 = "B", Col2 = "X", Value = 9 },
new { Col1 = "B", Col2 = "Y", Value = 12 },
new { Col1 = "B", Col2 = "Z", Value = 6 },
var result = data.GroupBy(x => x.Col2)
.OrderByDescending(x => x.Count())
var Value = x.Select(z => z.Value);
data = maxCount == x.Count() ? Value.ToArray() : Value.Concat(new int[maxCount - Value.Count()]).ToArray()
foreach (var item in result)
Console.WriteLine("Name: {0}", item.name);
foreach (int dat in item.data)
Console.WriteLine("Data: {0}", dat);