To make a LINQ query that returns a list of employees and the names of their departments, you would need to join the two lists on the department ID.   Here's an example of how you could do this with a LINQ query:  List departments = ... // list of departments
List employees = ... // list of employees
var query = from employee in employees
join department in departments on employee.DepartmentId equals department.Id
select new { Employee = employee, Department = department.Name };  In this example, the DepartmentId property of the Employee class and the Id property of the Department class are used to join the lists of employees and departments. This will make a list of anonymous objects with an Employee object and a Department object in each one.   The select clause is used to turn the result into a new list of anonymous objects that have the employee object and the name of the department.   The query syntax is another way to write this query.  var query = from department in departments
join employee in employees on department.Id equals employee.DepartmentId
select new { Employee = employee, Department = department.Name };  In this example, the join method is called on the departments list. It is given a lambda expression that specifies the key to join by, which is the Id property of the Department class and the DepartmentId property of the Employee class.   In both cases, the result will be stored in the query variable. The result is a list of anonymous objects that includes the employee object and the name of the department where the employee works.   In summary, one way to make a LINQ query that returns a list of employees and the names of their departments is to join the two lists on the department ID and project the result into a new sequence of anonymous objects that have the employee object and the name of the department. Another way to do this is to join the two lists on the department ID and choose the properties you want from both lists.