LINQ C# Tutorial

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
    class Customer
    {
        public string ID { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string Region { get; set; }
        public decimal Sales { get; set; }
    }
    class Program
    {
        static void Main(string[] args)
        {
            List customers = new List {
              new Customer { ID="Q", City="London", Country="UK", Region="Europe", Sales=8000 },
              new Customer { ID="R", City="Beijing", Country="China", Region="Asia", Sales=9000 },
              new Customer { ID="T", City="Lima", Country="Peru", Region="South America", Sales=2002 }
           };
            var queryResults =
                from c in customers
                group c by c.Region into cg
                select new { TotalSales = cg.Sum(c => c.Sales), Region = cg.Key }
               ;
            var orderedResults =
                from cg in queryResults
                orderby cg.TotalSales descending
                select cg
             ;
            foreach (var item in orderedResults)
            {
                Console.WriteLine(item.TotalSales + "\t: " + item.Region);
            }
        }
    }