Это LEFT JOIN
для DbSet<Room>
в LINQ
var Customerorders = (from u in db.Orders
join s in db.Employee on u.Staffid equals s.EmployeeId
join d in db.Department on u.DepartmentId equals d.DepartmentId
join r in db.Room on u.RoomId equals r.RoomId into r2
from r3 in r2.DefaultIfEmpty()
where u.OrderNr == 1005
select new
{
CheckinoutId = u.CheckInAndOutId,
CheckinDate = u.CheckInDate,
Checkout = u.CheckOutDate,
Department = d.DepartmentName,
RoomNr = r3.RoomNr,
Personal = s.FirstName + " " + s.LastName
}).ToList();
И это просто решение для вашего запроса
var Customerorders = db.Orders.Where(
item => item.OrderNr == 1005
).Select(
item => new
{
item.CheckInAndOutId,
item.CheckInDate,
item.CheckOutDate,
item.Department.DepartmentName,
Personal = item.Employee.FirstName + " " + item.Employee.LastName,
RoomNr = item.RoomId.HasValue ? item.Room.RoomNr : (int?)null
}
);