2013-12-14 2 views
1

두 개의 테이블이 있습니다. 요청답변요청 ID 함께 그들을 바인딩합니다. 는 지금, 나는사용자가 응답 한 요청 받기

... Request.Answers, 같은 일을하여 특정 요청에 대한 답변을 얻을 수 있어요하지만 내가 어떻게 답변에서 사용자 아이디 A 행이 동일 경우에만 요청을 얻기 위해이 관계를 사용합니까 어떤 것?

내가 달성하고자하는 것은 사용자가 응답 한 요청 만 나열 할 수 있다는 것입니다. 같은

뭔가 : 내가 관리해야

Requests.Where(x=>x.Answers(y=>y.UserId==currentUserId)) 



    public class Request 
    { 
     [Key] 
     public int RequestId { get; set; 
     public virtual ICollection<Answer> Answers { get; set; } 
    } 

    public class Answer 
    { 
     [Key] 
     public int AnswerId { get; set; } 
     public int RequestId { get; set; } 
     public virtual Request Request { get; set; } 
     public int UserId { get; set; } 
    } 

먼저 모든 AnswersId의 그룹 RequestID가로는, 다음 결과를 통해 루프가 목록에 요청을 추가 얻어서이 문제를 해결합니다. 그러나 이것은 매우 비효율적 인 방법 인 것처럼 보입니다.

더 쉬운 방법이 있나요?

감사합니다. 당신은 Answer 엔티티에 어떤 UserId 속성을 제공하지 않은 답변

Requests.Where(r => r.Answers.Any()) 

이 모든 요청을 반환합니다

답변

1

. 그러나 만약 당신이 하나 있다면, 특정 사용자의 답을 가지고있는 모든 요청을 얻는 것이 같습니다.

Requests.Where(r => r.Answers.Any(a => a.UserId == userId)) 
+1

감사합니다. – Josef