using System.Collections.Generic;
public static void Main()
UserDepartmentMapper.MapUsersToDepartments(null, null);
public static class UserDepartmentMapper
public static IEnumerable<(User User, List<Department> Departments)> MapUsersToDepartments(IEnumerable<User> users, IEnumerable<Department> departments)
if (users == null || departments == null)
return new List<(User, List<Department>)>();
var departmentDictionary = departments.ToDictionary(d => d.DepartmentId);
return users.Select(user => (
Departments: user.DepartmentIds
.Where(deptId => departmentDictionary.ContainsKey(deptId))
.Select(deptId => departmentDictionary[deptId])
.Where(dept => dept != null)
public string Name { get; set; }
public List<int> DepartmentIds { get; set; } = new List<int>();
public User(string name, int departmentId)
DepartmentIds.Add(departmentId);
public User(string name, List<int> departments)
DepartmentIds = departments;
public int DepartmentId { get; set; }
public string Name { get; set; }
public Department(int departmentId, string name)
DepartmentId = departmentId;