我想要获取所有没有当前团队的团队以及拥有 4 名或更多玩家的所有团队。 我尝试编写这个 linq lambda 查询:
teams = connection.Team
.Join(connection.Player,
t => t.ID,
p => p.IDTeam,
(t, p) => new { Team = t, Player = p })
.Where(tp => tp.Player.IDTeam == tp.Team.ID
&& tp.Team.ID != team.ID
&& tp.Team.IsVisible == true
&& !tp.Team.DeleteDate.HasValue)
.Select(tp => tp.Team)
.ToList();
但我无法计算在什么情况下有多少球员拥有球队。怎么做?哪个是 SQL 中的查询? 感谢您的帮助!
最佳答案
基于上面的类,您可以扩展Team
类并添加Players
导航属性。
添加导航属性时,请确保Team 和Player 表之间存在数据库关系。另外,如果需要,请配置您的 DbContext
。
public class Team
{
//...other properties
public virtual ICollection<Player> Players { get; set; }
}
当您添加导航属性时,实现您的要求将很简单:
connection.Teams
.Where(t => t.ID != team.ID && t.IsVisible == true && !t.DeleteDate.HasValue && t.Players.Count() >= 4)
关于c# - LINQ Lambda 连接与计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50293415/