如何在带有LINQ的c#Windows窗体中显示结果值甚至为null

问题描述 投票:0回答:1

image_example

[嗨,我正在使用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;
                         }

即使没有房间也无法显示订单?请帮助

c# linq datagridview nullable
1个回答
0
投票
这是LEFT JOINDbSet<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 } );

© www.soinside.com 2019 - 2024. All rights reserved.