using System.Collections.Generic;
public static void Main()
List<CustomData> myList = new List<CustomData>();
myList.Add(new CustomData()
{Branch = "Branch 1", ItemName = "Misal", Quantity = 150});
myList.Add(new CustomData()
{Branch = "Branch 1", ItemName = "Wada", Quantity = 100});
myList.Add(new CustomData()
{Branch = "Branch 2", ItemName = "Misal", Quantity = 160});
myList.Add(new CustomData()
{Branch = "Branch 2", ItemName = "Wada", Quantity = 210});
var result = myList.GroupBy(x => x.Branch).Select(y => new
FirstPeriod = y.Count(z => z.Quantity > 100 && z.Quantity <= 150),
SecondPeriod = y.Count(z => z.Quantity > 150 && z.Quantity <= 200),
ThirdPeriod = y.Count(z => z.Quantity > 200 && z.Quantity <= 250)
public static void Print<T>(IEnumerable<T> items)
var props = typeof (T).GetProperties();
foreach (var prop in props)
Console.WriteLine("{0}\t", prop.Name);
foreach (var item in items)
foreach (var prop in props)
Console.WriteLine("{0}\t", prop.GetValue(item, null));