[嗨,我正在使用Entity Framwork winform,并且我试图在dataGridView中显示具有部门名称和Roomnr的订单,甚至在不具有Roomnr且Roomnr为null的订单中显示订单,但是,仅显示具有Department和RoomId的对象不为null。如何显示RoomId == null的那些部门?这是我的代码:
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
where u.OrderNr == 1005 || u.OrderNr == 1005 && u.RoomId == null
select new
{
CheckinoutId = u.CheckInAndOutId,
CheckinDate = u.CheckInDate,
Checkout = u.CheckOutDate,
Department = d.DepartmentName,
RoomNr = r.RoomNr,
Personal = s.FirstName+" "+s.LastName
}).ToList();
if(Customerorders != null) // I Tried even with out if condition
{
dgvOrders.DataSource = Customerorders;
}
即使没有房间也无法显示订单?请帮助
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 } );