2012-11-13 79 views
0

我可能是一個白癡,我一直在尋找過去2個小時尋找答案,這個問題很可能是,我不確定如何來形容它。EF代碼優先 - 集合內

基本上我是新來的代碼第一,並在這個項目中使用它,並不確定如何查詢它。

我有三類

檔案>球隊>活動

我需要得到哪些特定的用戶可以訪問事件的列表,用戶必須是一個團隊的成員,該擁有上述活動。

用戶(個人資料)可以是許多團隊的成員,我需要所有團隊的活動列表。

我已經砍了我的課,因爲大部分是無關緊要什麼要問我目前

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

回答

1

嘗試的SelectMany

var events = db.Profiles 
     .Where(p => p.User_ID == user) 
     .SelectMany(p=>p.Teams.SelectMany(t=>t.Events)); 
+0

感謝,將在早上嘗試這個工作並讓你知道它是怎麼回事。 – ItWontWork

+0

謝謝!完美的作品。 – ItWontWork