我没有运气就搜索了几个小时。我正在尝试创建一个lambda表达式来从两个表Schedule和Request中获取数据。但我在这里输出一个bool。我怎样才能做一个合适的左外连接来解决这个问题? 这是我能想到的最好的
ViewBag.RequestList = db.Requests
.Include(r => r.Department)
.Select(r => db.Schedules.Any(s => s.RequestId == r.RequestId));
但它不是一个列表。
假设我的表格模型如下
public class Request{
public virtual int RequestId { get; set; }
public virtual string Remarks { get; set; }
}
public class Schedule{
public virtual int ScheduleId{ get; set; }
public virtual string Name{ get; set; }
public virtual Request Request { get; set; }
}
我正在尝试查看每个请求是否有一个或多个与之关联的计划。因此,如果我可以附加计划对象请求并将其作为列表输出,那么这就是我所需要的。 但我想用LINQ和lambda表达式来做这件事,我看过如下的查询;
var leftList = (from emp in db.Requests
join d in db.Schedules
on emp.RequestId equals d.RequestId into output
from j in output.DefaultIfEmpty()
select new { RequestId = emp.RequestId,
name = emp.Department.Name,
route = emp.Route.Name });
但这不是我想要的,因为我必须在new { RequestId = emp.RequestId, name = emp.Department.Name, route = emp.Route.Name }
非常感谢!
答案 0 :(得分:0)
只需列出您想要的内容:
var leftList = from emp in db.Requests
join d in db.Schedules
on emp.RequestId equals d.RequestId into output
from j in output.DefaultIfEmpty()
select new
{
RequestId = emp.RequestId,
name = emp.Department.Name,
route = emp.Route.Name,
ScheduleId=j==null?0:j.ScheduleId,
SName=j==null?""j.Name,
};