如何从父实体查询嵌套属性

时间:2013-09-13 13:14:15

标签: c# linq nhibernate entity-relationship

这是我的情景:

  • 我有一个玩家对象
  • 播放器包含一个TeamMembers IList(如果一个玩家可以为另一个团队服务,则该玩家可能是多个团队的一部分)
  • TeamMembers映射到特定团队
  • 团队有季节财产。

我想要的是:找出所有与玩家分开的季节。

player.TeamMembers[0].Team.Season会给我当前的赛季。我想要所有可能性,因为TeamMembers.Count可能不止一个。

这是我到目前为止所尝试过的,并且语法上出现了很多“红色突出显示”的错误。

var seasons = _seasonRepository.Query()
               .Where(s => s.Teams
                            .Where(t => t.TeamMembers
                                         .Where(tm => tm.Player.PlayerId == player.PlayerId)));

1 个答案:

答案 0 :(得分:0)

使用Any()代替您嵌套的Where

_seasonRepository.Query()
               .Where(s => s.Teams
                            .Any(t => t.TeamMembers
                                         .Any(tm => tm.Player.PlayerId == player.PlayerId)));

或德米特里的版本

player.TeamMembers.Select(tm => tm.Team.Season).Distinct();