C# 使用Web Api和EF中的Linq访问具有导航属性的实体

C# 使用Web Api和EF中的Linq访问具有导航属性的实体,c#,linq,entity-framework,asp.net-web-api,C#,Linq,Entity Framework,Asp.net Web Api,您好,我正在尝试使用etity框架在web api中编写linq查询。 我有两个实体 MainProj task_list p_id t_id p_name p_id --------- t_name navigation properties ---

您好,我正在尝试使用etity框架在web api中编写linq查询。 我有两个实体

MainProj                            task_list
p_id                                t_id
p_name                              p_id
---------                           t_name
navigation properties            -------------------
task_list                         navigation properties 
                                  mainProj 
MainProj与任务列表有1对多关系 我使用以下linq查询

var list=( from z in MainProj 
select new pList
{
       proj_name=z.p_name
       proj_id=z.p_id
       newtasklist = new List<newtasklist>
         {
             new newtasklist {
             task_list=z.task_list.(** cant access the properties from task_list here)
    }}
  });
 task_list=c.task_list.(** cant access the properties from task_list here)

正如您所说,在
Mainproj
task\u list
中存在一对多关系,您可以执行以下操作

以下是
Mainproj

List<MainProj> mProjects = new List<MainProj>
{
    new MainProj
    {
        p_id = 1, taskList =new List<task_list> {
                    new task_list{ p_id=1, t_id = 1, t_name="Dev"},
                    new task_list{ p_id=1, t_id = 2, t_name="QA"},
                }, name="Proj1"
    },
    new MainProj
    {
        p_id = 2, taskList =new List<task_list> {
                    new task_list{ p_id=2, t_id = 1, t_name="RA"},
                    new task_list{ p_id=2, t_id = 2, t_name="DEV"},
                },name="Proj2"
     }
};
下面是快速观察结果


您希望
newtasklist
包含什么?c.task\u列表引用来自哪里?没有对C的引用基本上linq查询应该为每个p_id和p_名称返回包含t_id和t_名称的所有任务(newtasklist)。抱歉,这应该是z.task_列表,这是一个输入错误。感谢您不确定为什么要在
newtasklist=new list{new newtasklist{task\u list=z中分配
task\u list
task\u list
不是
newtasklist
类的成员
List<MainProj> mProjects = new List<MainProj>
{
    new MainProj
    {
        p_id = 1, taskList =new List<task_list> {
                    new task_list{ p_id=1, t_id = 1, t_name="Dev"},
                    new task_list{ p_id=1, t_id = 2, t_name="QA"},
                }, name="Proj1"
    },
    new MainProj
    {
        p_id = 2, taskList =new List<task_list> {
                    new task_list{ p_id=2, t_id = 1, t_name="RA"},
                    new task_list{ p_id=2, t_id = 2, t_name="DEV"},
                },name="Proj2"
     }
};
  var lst = (from p in mProjects
             select new pList
             {
                 p_id = p.p_id,
                 p_name = p.name,
                 newtasklist = p.taskList.Select(x => new newtasklist { p_id = x.p_id, t_id = x.t_id, t_name = x.t_name })
             });