using System; using System.Collections.Generic; using System.Linq; using System.Text; public class Test { public static void Main() { var dtMovieListDetails = new List() { new MovieClass() { Format="DVD", MovieName="Star Wars", Price=12.99M}, new MovieClass() { Format="DVD", MovieName="Star Wars II", Price=13.99M}, new MovieClass() { Format="Blue-Ray", MovieName="Star Wars", Price=15.99M}, new MovieClass() { Format="Blue-Ray", MovieName="Star Wars II", Price=17.99M} }; var moviesToBuy = from movie in dtMovieListDetails orderby movie.Format, movie.Price group movie by movie.Format into grp select new { Format = grp.Key, Movies = grp.Select (g => new { MovieName = g.MovieName, Price = g.Price }) }; foreach(var movie in moviesToBuy) { Console.WriteLine(movie.Format); foreach(var detail in movie.Movies) { Console.WriteLine(string.Format(" {0} {1}", detail.MovieName, detail.Price)); } } } } public class MovieClass { public string Format { get; set; } public string MovieName { get; set; } public decimal Price { get; set; } }