using System.Collections.Generic;
public static void Main()
var cars = new List<Car>() {
new Car("Avante", null, 2000, 100),
new Car("Avante", "Hyundai", 2014, 0),
new Car("Avante", "Hyundai", 2014, 200),
new Car("Avante", "Hyundai", 2014, 250),
new Car("Golf", "VW", 2002, 100),
new Car("Golf", "VW", 2002, 10),
new Car("Mini", "BMW", 2011, 150),
new Car("Mini", "BMW", 2012, 100),
new Car("Chrome", "Google", 2001, 111),
new Car("Chrome", "Google", 2002, 100),
var results = cars.Where(p => !String.IsNullOrWhiteSpace(p.Desc)).GroupBy(p => new {p.Name, p.Desc, p.Year}, (q, r) => new { Key = q.Name, Desc = q.Desc, Year = q.Year, Count = r.Count(), Max = r.Max(s => s.Price), Min = r.Min(s => s.Price) });
Console.WriteLine(results.Count());
foreach(var result in results)
Console.WriteLine("{0}:::{1}:::{2}:::{3}:::{4}:::{5}", result.Key, result.Desc, result.Year, result.Count, result.Max, result.Min);
public Car(string name, string desc, int year, int price)
public string Name {get;set;}
public string Desc {get;set;}
public int Year {get;set;}
public int Price {get;set;}