我有两张桌子。 请求和答案, 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来解决这个问题,然后遍历结果以将请求添加到列表中。但这似乎是一种非常无效的方式。
有没有更简单的方法来完成这项工作?
谢谢!
答案 0 :(得分:1)
这将返回所有有答案的请求
Requests.Where(r => r.Answers.Any())
您尚未在UserId
实体上提供任何Answer
属性。但是如果你有一个,那么获得具有特定用户答案的所有请求就像
Requests.Where(r => r.Answers.Any(a => a.UserId == userId))