获取用户已回答的请求

时间:2013-12-14 08:55:35

标签: c# linq entity-framework entity-framework-4

我有两张桌子。 请求答案 RequestId 列将它们绑定在一起。 现在,我可以通过执行类似Request.Answers ...

的操作来获取特定请求的答案

但是,如何使用此关系仅获取Answers中 UserId 列等于某些内容的请求?

我想要达到的目的是用户只能列出他已回答的请求。

类似的东西:

    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; }
     }

我设法通过首先通过RequestId获取所有AnswersId和group来解决这个问题,然后遍历结果以将请求添加到列表中。但这似乎是一种非常无效的方式。

有没有更简单的方法来完成这项工作?

谢谢!

1 个答案:

答案 0 :(得分:1)

这将返回所有有答案的请求

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

您尚未在UserId实体上提供任何Answer属性。但是如果你有一个,那么获得具有特定用户答案的​​所有请求就像

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