我可能是个白痴,过去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; }
}
答案 0 :(得分:1)
尝试SelectMany
var events = db.Profiles
.Where(p => p.User_ID == user)
.SelectMany(p=>p.Teams.SelectMany(t=>t.Events));