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

本文关键字:查询 嵌套 属性 实体 | 更新日期: 2023-09-27 18:31:16

这是我的方案:

  • 我有一个播放器对象
  • 球员
  • 包含队员IList(如果一名球员替补另一支球队,他可能是多支球队的一员)
  • 团队成员映射到特定团队
  • 球队有一个赛季属性。

我想要的:找到所有与球员分开的赛季。

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

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

使用 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();