0

私はおそらくばかで、これに対する答えを探して過去 2 時間探し回っていました。

基本的に、私は最初にコードを作成するのが初めてで、このプロジェクトでそれを使用しており、クエリの方法がわかりません。

私は3つのクラスを持っています

プロフィール > チーム > イベント

特定のユーザーがアクセスできるイベントのリストを取得する必要があります。ユーザーは、そのイベントを所有するチームのメンバーである必要があります。

ユーザー (プロファイル) は多くのチームのメンバーになることができ、すべてのチームからのイベントのリストが必要です。

クラスのほとんどは現在求めているものとは無関係であるため、クラスを切り詰めました

  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 に答える