2014-03-25 72 views
-1

我有2个表AtdDailyAttendanceAcdAdmissionSessionDetails。我想加入由LINQ这两个表基础上的ID 2,这意味着在SQL中加入的样子Linq加入:无法加入2列表根据2 Id的

SELECT a.Id, a.DateId, 
    a.StudentLedgerId, a.AttendanceTypeId, 
    a.SchoolId, a.UserId, a.SessionId, 
    d.ClassId,d.MediumId,  
    d.StreamId, d.ShiftId, 
    d.SectionId 
FROM AtdDailyAttendance a INNER JOIN AcdAdmissionSessionDetail d 
    ON a.StudentLedgerId = d.StudentLedgerId AND a.SessionId = d.SessionId 

但在LINQ,我无法做到这一点。我试过这种方式

var query = 
    from a in dbCOntext.AtdDailyAttendances 
    join b in dbCOntext.AcdAdmissionSessionDetails 
    on a.StudentLedgerId equals b.StudentLedgerId 
    // on a.SessionId equlas b.SessionId 
    select new 
    { 
     a.AtdSetedDatesForAttendance, 
     a.DateId, 
     a.StudentLedgerId, 
     a.SchoolId, 
     a.UserId, 
     a.SessionId, 
     b.ClassId, 
     b.SectionId, 
     b.MediumId, 
     b.StreamId 
    } 

var liResult = query.ToList(); 

在这里,我无法执行SessionId之间的联接。

+2

http://stackoverflow.com/questions/7664727/linq-join-with-multiple条件在条款 – jmcilhinney

回答

2

我认为你正在寻找:

var liResult = (from a in dbCOntext.AtdDailyAttendances 
    join b in dbCOntext.AcdAdmissionSessionDetails 
    on new { a.StudentLedgerId, a.SessionId } 
    equals new { b.StudentLedgerId, b.SessionId} 
+0

发现它太容易了..谢谢 –

-1

看看这将工作:

dbContext.AtdDailyAttendances.Join(dbContext.AcAdmissionSessionDetails, m => m.StudentLedgerId,  n => n.StudentLedgerId, (m, n) => new{ 
           m.AcdAdmissionSessionDetails, 
           m.DateId, 
           m.StudentLedgerId, 
           m.SchoolId, 
           m.UserId, 
           AttendanceSessionId = n.SessionId, 
           AdmissionSessionId = m.SessionId, 
           n.ClassId, 
           n.SectionId, 
           n.MediumId, 
           n.StreamId 

    }).Where(n => n.AttendanceSessionId == n.AdmissionSessionId).ToList();