我在确定Linq多个连接中左外连接的语法时遇到问题.我想在RunLogEntryTable 上进行左连接,这样我就可以获得与此表以及所有服务条目匹配的记录.
有人可以纠正我的snytax吗?
var list = (from se in db.ServiceEntry
join u in db.User on se.TechnicianID equals u.ID
join s in db.System1 on se.SystemID equals s.ID
join r in db.RunLogEntry on se.RunLogEntryID equals r.ID
where se.ClosedDate.HasValue == false
where se.ClosedDate.HasValue == false
&& se.Reconciled == false
orderby se.ID descending
select new ServiceSearchEntry()
{
ID = se.ID,
ServiceDateTime = se.ServiceDateTime,
Technician = u.FullName,
System = s.SystemFullName,
ReasonForFailure = se.ReasonForFailure,
RunDate = r.RunDate
})
.Skip((page - 1) * PageSize);
Run Code Online (Sandbox Code Playgroud)
使用.DefaultIfEmpty方法r执行左连接:
var list = (from se in db.ServiceEntry
join r in db.RunLogEntry on se.RunLogEntryID equals r.ID into joinRunLogEntry
from r2 in joinRunLogEntry.DefaultIfEmpty()
join u in db.User on se.TechnicianID equals u.ID
join s in db.System1 on se.SystemID equals s.ID
where se.ClosedDate.HasValue == false
where se.ClosedDate.HasValue == false
&& se.Reconciled == false
orderby se.ID descending
select new ServiceSearchEntry()
{
ID = se.ID,
ServiceDateTime = se.ServiceDateTime,
Technician = u.FullName,
System = s.SystemFullName,
ReasonForFailure = se.ReasonForFailure,
RunDate = (r2 == null ? (DateTime?)null : r2.RunDate)
})
.Skip((page - 1) * PageSize);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
543 次 |
| 最近记录: |