5

Linq複数の結合内の左外部結合の構文を理解するのに問題があります。テーブルで左結合を実行したいRunLogEntryので、このテーブルとすべてのサービスエントリから一致するレコードを取得します。

誰かが私の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);
4

1 に答える 1

5

.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);
于 2012-07-17T21:13:30.530 に答える