LINQ C# Tutorial

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string EmailAddress { get; set; }
        public override string ToString()
        {
            return string.Format("{0} {1}\nEmail:   {2}",FirstName, LastName, EmailAddress);
        }
    }
    public class Tester
    {
        static void Main()
        {
            List customers = new List{
                    new Customer { FirstName = "A", 
                                    LastName = "B",
                                    EmailAddress = "o@a.com"},
                    new Customer { FirstName = "C", 
                                    LastName = "H",
                                    EmailAddress = "k@a.com" },
                    new Customer { FirstName = "D", 
                                    LastName = "C",
                                    EmailAddress = "d@a.com" },
                    new Customer { FirstName = "J", 
                                    LastName = "G",
                                    EmailAddress = "j@a.com" },
                    new Customer { FirstName = "L", 
                                    LastName = "H",
                                    EmailAddress = "l@a.com" }
            };
            IEnumerable result = from customer in customers where customer.FirstName == "D" select customer;
            List cachedResult = result.ToList();
            foreach (Customer customer in cachedResult)
                Console.WriteLine(customer.ToString());
            customers[3].FirstName = "Donna";
            foreach (Customer customer in cachedResult)
                Console.WriteLine(customer.ToString());
        }
    }