2013-12-14 114 views
1

我有两个表。 请求答案与列RequestId将它们绑定在一起。 现在,我能够通过执行类似,Request.Answers以获取特定请求答案......获取用户已回答的请求

可是我怎么用这个关系只得到请求,其中用户ID -column的答案等于什么?

我想实现的是用户只能列出他已经回答的请求。

喜欢的东西:

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的和group by请求ID,然后遍历结果的请求添加到列表中来解决这个问题。但是,这似乎是一个非常不方便的做法。

有没有更简单的方法来完成这件事?

谢谢!

回答

1

,将返回该有答案

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

您没有提供Answer实体的任何UserId财产的所有请求。但如果你有一个,然后得到所有的请求,从特定用户的答案看起来像

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

谢谢,它的工作原理! – Josef