LINQ Noob,我该如何编写这个常见查询?

时间:2011-10-17 22:39:37

标签: linq entity-framework

我是一个很长时间的开发者,但仍然是LINQ的新手。在处理一组对象时我很好,但是当我需要从多个来源获取时,事情变得更加困难,我可以使用一些指导来获得我需要的东西。

我的数据库中有三个表,两个相关表,另一个持有PK / FK将它们绑在一起。如下所示:

用户

  • UserID
  • 用户名

调查

  • SurveyID
  • SurveyName

UserSurveys

  • 用户ID
  • SurveyID

我正在使用 EF ,因此所有这些数据都被提取到了对象中。

所以...我想要做的是返回与给定用户关联的所有调查的列表。所以像(伪代码):

// currentUserID = the UserID I need to get matching Surveys for
var surveys = from Survey where (s => s.SurveyID == UserSurvey.SurveyID && UserSurvey.UserID == currentUserID);

我假设我需要创建一个子查询并使用Contains()或类似的东西,但我不断绊倒自己。帮助

3 个答案:

答案 0 :(得分:2)

应该是这样的:

from us in UserSurveys
where us.UserId == currentUserID
join s in Surveys on us.SurveyID equals s.SurveyID
select s

答案 1 :(得分:2)

如果这是EF,您应该可以someUser.Surveys

答案 2 :(得分:1)

假设您的数据库和实体模型包含所有FK引用,您应该可以执行此类操作....

// currentUserID = the UserID I need to get matching Surveys for 
var surveys = from s in Survey 
              where s.User.UserID == currentUserID
              select s;