0

我可能是个白痴,在过去的 2 个小时里我一直在寻找这个问题的答案,问题很可能是我不确定如何表达它。

基本上我是第一次编码并在这个项目中使用它并且不确定如何查询它的新手。

我有三个班

简介 > 团队 > 活动

我需要获取特定用户可以访问的事件列表,该用户必须是拥有所述事件的团队的成员。

用户(个人资料)可以是许多团队的成员,我需要所有团队的事件列表。

我已经减少了我的课程,因为其中大部分与我目前的要求无关

  private void BindEvents()
    {
        var db = new Context();

        var events = db.Profiles
            .Include("Teams")
            .Include("Teams.Events")
            .Where(p => p.User_ID == user)
            .FirstOrDefault().Teams.Select(t => new { t.Events }.Events);

        gvUpcomingEvents.DataSource = events;
        gvUpcomingEvents.DataBind();

        db.Dispose();
    }

public class Profile
{
   [Key]
   public Guid User_ID { get; set; }
   [Required, MaxLength(10)]
   public string Title { get; set; }
   [Required, MaxLength(50)]
   public string Forename { get; set; }
   [Required, MaxLength(50)]
   public string Surname { get; set; }
   public ICollection<Team> Teams { get; set; }
   public Profile()
   {
       Teams = new HashSet<Team>();
   }
}


public class Team
{
    [Key]
    public int ID { get; set; }
    [Required, MaxLength(150)]
    public string Name { get; set; }
    [Required]
    public bool Active { get; set; }

    //Foreign Keys
    public ICollection<Profile> Users { get; set; }
    public ICollection<Event> Events { get; set; }

    public Team()
    {
        Users = new HashSet<Profile>();
    }
}

public class Event
{
   [Key]
   [Required]
   public int ID { get; set; }
   [Required]
   public Guid GUID { get; set; }
}
4

1 回答 1

1

试试 SelectMany

var events = db.Profiles
         .Where(p => p.User_ID == user)
         .SelectMany(p=>p.Teams.SelectMany(t=>t.Events));
于 2012-11-13T16:09:17.980 回答