【问题标题】:lambda expression to select single row from parent table where join table object value contains specific objectlambda 表达式从父表中选择单行,其中连接表对象值包含特定对象
【发布时间】:2020-03-20 14:49:56
【问题描述】:

如果这是重复的,我深表歉意,但我搜索并找不到我的场景。

我有一个名为 Tournaments 的“父”表和一个容纳锦标赛参与者的 Players 表。这是多对多的关系,因为我可以参加多个锦标赛,并且相同的玩家(或多或少)可以参加每场锦标赛。

为了允许我的多对多关系,我创建了一个连接表。

我的对象如下所示: TournamentEntity.cs

public class TournamentEntity : IInt32Identity
{
    public int Id { get; set; }
    ...
    public List<TournamentPlayers> Participants { get; set; }
}

TournamentPlayers.cs(这是我的加入实体)

    public class TournamentPlayers
        {
            public int TournamentId { get; set; }
            public TournamentEntity Tournament { get; set; }
            public int PlayerId { get; set; }
            public PlayerEntity Player { get; set; }
        }

PlayerEntity.cs

public class PlayerEntity : IInt32Identity
{
    public int Id { get; set; }
    ...
    public List<TournamentPlayers> Participants { get; set; }
}

我想返回一个列表和/或一个 TournamentEntity 实例,其中包含一个简单的 lambda 表达式,来自一个传递给我的方法的 PlayerEntity。

示例方法:

public async Task<TournamentEntity> GetTournamentByTournamentParticipant(PlayerEntity tournamentParticipant)
    {
            return await EntityDbSet
                .Where(x => x.Participants.Contains) // this is where I'm a bit lost on how to link to "tournamentParticipant"
                ...
                .Include(x => x.Participants)
                .ThenInclude(b => b.Player)
                .FirstOrDefaultAsync();
        }

提前致谢。

【问题讨论】:

    标签: c# entity-framework entity-framework-core lambda


    【解决方案1】:

    你试过了吗

    return await EntityDbSet
                    .Where(x => x.Participants.Any(p => p.PlayerId == tournamentParticipant.Id))
                    .Include(x => x.Participants)
                    .ThenInclude(b => b.Player)
                    .FirstOrDefaultAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多