C# EF Core从子表返回特定列

C# EF Core从子表返回特定列,c#,linq,entity-framework-core,C#,Linq,Entity Framework Core,我不想使用.include来获取整个子表。我只需要选择列 public class ProjectTypeDTO { public string Type { get; set; } } public class CourseDTO { public string CourseCode { get; set; } public string CourseTitle { get; set; } } public class ProjectDTO { public

我不想使用.include来获取整个子表。我只需要选择列

public class ProjectTypeDTO {
    public string Type { get; set; }
}

public class CourseDTO {
    public string CourseCode { get; set; }
    public string CourseTitle { get; set; }
}

public class ProjectDTO {
    public int Id { get; set; }
    public ProjectTypeDTO ProjectType { get; set; }
    public CourseDTO Course { get; set; }
    public string StartTerm { get; set; }
    public DateTime SignOff { get; set; }
    public DateTime StartDateTime { get; set; }
}

[HttpGet("getallprojects")]
public IActionResult GetAllProjects()
{
    var projects = _context.Projects
          .Select(p => new ProjectDTO
           {
               Id = p.Id,
               ProjectType = { Type = p.ProjectType.Type },
               Course = { CourseCode = p.Course.CourseCode, CourseTitle = p.Course.CourseTitle },
               StartTerm = p.StartTerm,
               SignOff = p.SignOff,
               StartDateTime = p.StartDateTime,
               }).ToList();

    return Ok(projects);
}
这会引发“NotImplementedException:方法或操作未实现”错误

我已经把它作为一个匿名函数进行了测试,它可以正常工作

var projects = _context.Projects
    .Select(p => new
    {
        p.Id,
        p.ProjectType.Type,
        p.SignOff,
        p.StartDateTime,
        p.Course.CourseCode,
        p.Course.CourseTitle,
        p.StartTerm
     }).ToList();
匿名类型不适用于我的应用程序,因为我需要能够在数据返回之前对此数据进行更改


根据我在这里看到的其他例子和其他网站,这看起来是正确的。这可能是个bug吗?

我以前没有见过子对象的语法。例如:

ProjectType = { Type = p.ProjectType.Type }
我认为应该是:

ProjectType = new ProjectTypeDTO{ Type = p.ProjectType.Type }

我以前没有见过子对象的语法。例如:

ProjectType = { Type = p.ProjectType.Type }
我认为应该是:

ProjectType = new ProjectTypeDTO{ Type = p.ProjectType.Type }

那是什么
ProjectType={Type=p.ProjectType.Type}
?这不应该是
ProjectType=newprojecttypedto{Type=p.ProjectType.Type}
?与
课程相同
那是什么
ProjectType={Type=p.ProjectType.Type}
?这不应该是
ProjectType=newprojecttypedto{Type=p.ProjectType.Type}
?与
课程相同