static void PrintEmployeesWithQueryProblem(TelerikAcademyEntities academyEntities) { foreach (var employee in academyEntities.Employees) { Console.WriteLine("EmployeeName: {0}; Department: {1}; Town: {2}",employee.FirstName + ' ' + employee.LastName, employee.Department.Name,employee.Address.Town.Name); } }
static void Main() { TelerikAcademyEntities academyEntities = new TelerikAcademyEntities(); Console.WriteLine("\nBefore:"); EmployeesFromSofia_Slow(academyEntities); Console.WriteLine("\nAfter"); EmployeesFromSofia_Fast(academyEntities); }
static void Main(string[] args) { TelerikAcademyEntities academyEntities = new TelerikAcademyEntities(); Console.WriteLine("\nWith Problem"); PrintEmployeesWithQueryProblem(academyEntities); Console.WriteLine("\nWithout Problem"); PrintEmployeesWithoutQueryProblem(academyEntities); }
static void EmployeesFromSofia_Slow(TelerikAcademyEntities academyEntities) { var employeesFromSofia = academyEntities.Employees.ToList() .Select(e => e.Address).ToList() .Select(e=>e.Town).ToList() .Where(e => e.Name=="Sofia"); foreach (var employee in employeesFromSofia) { Console.WriteLine(employee.Name); } }
static void EmployeesFromSofia_Fast(TelerikAcademyEntities academyEntities) { List<Employee> employeesFromSofia = (from employee in academyEntities.Employees join address in academyEntities.Addresses on employee.AddressID equals address.AddressID join town in academyEntities.Towns on address.TownID equals town.TownID where town.Name=="Sofia" select employee).ToList(); foreach (var employee in employeesFromSofia) { Console.WriteLine(employee.FirstName + " " + employee.LastName); } }