using System.Collections.Generic;
using System.Diagnostics;
public static void Main()
var employees = new List<Employee>();
for (var i = 0; i < 20000; i++)
employees.Add(new Employee() { Id = i, DepartmentId = i });
var departments = new List<Department>();
for (var i = 0; i < 20000; i++)
departments.Add(new Department() { Id = i });
var stopwatch = Stopwatch.StartNew();
var results = Run(employees, departments);
if (results.Count() != 20000)
throw new System.Exception("wrong answer");
Console.WriteLine(stopwatch.ElapsedMilliseconds);
public static IEnumerable<EmployeeDepartment> Run(IEnumerable<Employee> employees, IEnumerable<Department> departments)
var results = new List<EmployeeDepartment>();
foreach (var employee in employees)
var res = new EmployeeDepartment()
Department = departments.First(department => department.Id == employee.DepartmentId)
public int Id { get; set; }
public int DepartmentId { get; set; }
public int Id { get; set; }
public class EmployeeDepartment
public Department Department { get; set; }
public Employee Employee { get; set; }