C# Linq加入对象的列表属性

C# Linq加入对象的列表属性,c#,asp.net-mvc,asp.net-core,C#,Asp.net Mvc,Asp.net Core,嘿,我有两门课: public class Project { public int Id { get; protected set; } public string ProjectName { get; protected set; } public List<Task> TaskList{ get; protected set; } } public class Task { public int Id { get; protected set; }

嘿,我有两门课:

public class Project 
{
  public int Id { get; protected set; } 
  public string ProjectName { get; protected set; }
  public List<Task> TaskList{ get; protected set; }  
}

public class Task
{
  public int Id { get; protected set; }
  public int ProjectId { get; protected set; }
  public string Name { get; protected set; } 
}
公共类项目
{
public int Id{get;protected set;}
公共字符串ProjectName{get;protected set;}
公共列表任务列表{get;protected set;}
}
公开课任务
{
public int Id{get;protected set;}
public int ProjectId{get;protected set;}
公共字符串名称{get;protected set;}
}
如果我使用实体框架,是否可以从数据库中获取项目对象(例如,通过id),同时将任务列表加入到[Project]任务列表属性中,或者我应该先获取项目,然后再获取任务


如何正确地实现它?

如果您描述了表项目和任务之间的关系 您可以直接调用您的项目实体;它将附带一个相关任务的列表;如果您没有描述关系,那么您必须通过linq创建一个连接查询,或者使用
.Inlcude
将实体彼此关联起来

var tasks = (from items in db.Task
join projects in db.Project on items.ProejctId equals projects.Id
where 1==1 // you can add some other confitions to here
select new SelectItemsList() { //Items you want to select })

若您描述了表项目和任务之间的关系,请参见 您可以直接调用您的项目实体;它将附带一个相关任务的列表;如果您没有描述关系,那么您必须通过linq创建一个连接查询,或者使用
.Inlcude
将实体彼此关联起来

var tasks = (from items in db.Task
join projects in db.Project on items.ProejctId equals projects.Id
where 1==1 // you can add some other confitions to here
select new SelectItemsList() { //Items you want to select })

您是否需要如下代码所示的项目类对象?不使用。包括

var res=(来自db.ProjectTable中的p
选择新项目
{
Id=p.Id,
ProjectName=p.ProjectName,
TaskList=(从db.TaskTable中的q开始)
其中q.projectd=p.Id
选择q
)托利斯先生()
}).ToList();
返回res//你会得到他们的名单

是否需要如下代码所示的项目类对象?不使用。包括

var res=(来自db.ProjectTable中的p
选择新项目
{
Id=p.Id,
ProjectName=p.ProjectName,
TaskList=(从db.TaskTable中的q开始)
其中q.projectd=p.Id
选择q
)托利斯先生()
}).ToList();
返回res//你会得到他们的名单

查看导航属性并
。包括它可以工作。这个解决方案的优点和缺点是什么?看一看。可能有助于查看导航属性和
。包括
它可以工作。这个解决方案的优点和缺点是什么?看一看。可能有助于单个项目,对项目表使用where条件,如p.ProjectId==ProjectId(ProjectId可以是参数变量),对单个项目使用where条件,对项目表使用where条件,如p.ProjectId==ProjectId(ProjectId可以是参数变量)