2011-12-18 4 views
0

안녕하세요 모두, 내 linq 성명과 함께 붙어있어 몇 시간 동안 인터넷 검색 후.LinQ 여러 조인, where 조인과 왼쪽 조인 및 그룹

나는 3 개 테이블이 : tbMessage에서

- tblRequest : RequestID, RequestDate, UserID 
- tblUser: UserID, Username 
- tbMessage: MessageID, RequestID, IsRead 

RequestID가이 tblRequest에서 RequestID가의 외래 키

내 시나리오는 내가 특정 사용자에 대한 tblRequest의 모든 요청을 얻을 필요가 있다는 것입니다 , 읽지 않은 메시지의 수입니다.

선택된 필드 (== 거짓 Isread) 미리

감사 tblRequest.RequestID, tblRequest.RequsetDate, tblUser.Username, COUNTOfUnreadMessage되어야!

안부

답변

1

도움이되기를 바랍니다 : _userID 원하는 사용자 ID와 지역 변수입니다

from r in db.Requests 
where r.UserID == _userID 
select new 
{ 
    r.RequestId, 
    r.RequestDate, 
    r.User.Username, 
    UnreadMessagesCount = r.Messages.Where(m=>!m.IsRead).Count() 
} 

.

1

나는 당신을위한 해결책이 있다고 생각합니다. db는 linq 데이터베이스 컨텍스트입니다. 이것은 DBContext 관계를 사용

var userId=1; 
    (
     from req in db.tblRequest 
     join user in db.tblUser 
      on req.UserID equals user.UserID 
     where 
      req.UserID==userId 
     select new 
     { 
      req.RequestID, 
      req.RequestDate, 
      user.Username, 
      COUNTOfUnreadMessage= db.tbMessage.Where(a=>a.RequestID==req.RequestID && a.IsRead==false).Count() 
     } 
    ).ToList()