using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Test
{
public static void Main()
{
var dtMovieListDetails = new List<MovieClass>()
{
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; }
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0OwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJdmFyIGR0TW92aWVMaXN0RGV0YWlscyA9IG5ldyBMaXN0PE1vdmllQ2xhc3M+KCkKCXsKCQluZXcgTW92aWVDbGFzcygpIHsgRm9ybWF0PSJEVkQiLCBNb3ZpZU5hbWU9IlN0YXIgV2FycyIsIFByaWNlPTEyLjk5TX0sCgkJbmV3IE1vdmllQ2xhc3MoKSB7IEZvcm1hdD0iRFZEIiwgTW92aWVOYW1lPSJTdGFyIFdhcnMgSUkiLCBQcmljZT0xMy45OU19LAoJCW5ldyBNb3ZpZUNsYXNzKCkgeyBGb3JtYXQ9IkJsdWUtUmF5IiwgTW92aWVOYW1lPSJTdGFyIFdhcnMiLCBQcmljZT0xNS45OU19LAoJCW5ldyBNb3ZpZUNsYXNzKCkgeyBGb3JtYXQ9IkJsdWUtUmF5IiwgTW92aWVOYW1lPSJTdGFyIFdhcnMgSUkiLCBQcmljZT0xNy45OU19Cgl9OwoKCXZhciBtb3ZpZXNUb0J1eSA9IGZyb20gbW92aWUgaW4gZHRNb3ZpZUxpc3REZXRhaWxzCgkJb3JkZXJieSBtb3ZpZS5Gb3JtYXQsIG1vdmllLlByaWNlCgkJZ3JvdXAgbW92aWUgYnkgbW92aWUuRm9ybWF0IGludG8gZ3JwCgkJc2VsZWN0IG5ldwoJCXsKCQkgICAgRm9ybWF0ID0gZ3JwLktleSwKCQkJTW92aWVzID0gZ3JwLlNlbGVjdCAoZyA9PiBuZXcgeyBNb3ZpZU5hbWUgPSBnLk1vdmllTmFtZSwgUHJpY2UgPSBnLlByaWNlIH0pCgkJfTsKCQkKCWZvcmVhY2godmFyIG1vdmllIGluIG1vdmllc1RvQnV5KQoJewoJCUNvbnNvbGUuV3JpdGVMaW5lKG1vdmllLkZvcm1hdCk7CgkJZm9yZWFjaCh2YXIgZGV0YWlsIGluIG1vdmllLk1vdmllcykKCQl7CgkJICAgIENvbnNvbGUuV3JpdGVMaW5lKHN0cmluZy5Gb3JtYXQoIiAgICB7MH0gICAgIHsxfSIsIGRldGFpbC5Nb3ZpZU5hbWUsIGRldGFpbC5QcmljZSkpOwoJCX0KCX0KCX0KfQoKcHVibGljIGNsYXNzIE1vdmllQ2xhc3MKewoJcHVibGljIHN0cmluZyBGb3JtYXQgeyBnZXQ7IHNldDsgfQoJcHVibGljIHN0cmluZyBNb3ZpZU5hbWUgeyBnZXQ7IHNldDsgfQoJcHVibGljIGRlY2ltYWwgUHJpY2UgeyBnZXQ7IHNldDsgfQp9