如何 select 仅导航的特定属性 属性
How to select only specific properties of navigation property
我有一个简化的实体结构,如下所示:
class MarkingTask{
List<Task_Student> task_Students
}
class Task_Student{
List<Task_Student_Marker> task_Student_Markers
}
class Task_Student_Marker{
User marker
}
class User{
string name;
int age;
int password;
}
我正在进行如下预加载:
var taskList = context.markingTasks
.Include(mt => mt.task_Students)
.ThenInclude(ts => ts.task_Student_Markers)
.ThenInclude(tsm => tsm.marker) //Here, only want to select marker.name
.ToList();
问题是我在哪里可以做一个 select
子句来导航 属性 到 select 几个感兴趣的栏目?例如,目前 User
的所有属性都被 selected,但我只想要 User.name
.
我查了MSDN,好像include
子句里面不支持select
子句。
或者我必须把它分解成几个语句。
感谢提示
Include
和Select
是两个互斥的东西,不能在导航对象上同时设置。在我的例子中,它们都被解释为 left Join
,但是 Include
将 select 导航对象中的所有属性。我最终做了一些嵌套的 select
来定位 interset
的属性
var mts = context.markingTasks.Where(mt => mt.rubric.moduleConvenor.emailAddress == email && mt.task_Students.Count() != 0)
.Select(mt => new {
mt.name,
mt.moduleCode,
students = mt.task_Students.Select(ts => new {
ts.student.name,
ts.student.studentId,
markers = ts.task_Student_Markers.Select(tsm=>tsm.marker.userName).ToList()}).ToList()}).ToList();
我有一个简化的实体结构,如下所示:
class MarkingTask{
List<Task_Student> task_Students
}
class Task_Student{
List<Task_Student_Marker> task_Student_Markers
}
class Task_Student_Marker{
User marker
}
class User{
string name;
int age;
int password;
}
我正在进行如下预加载:
var taskList = context.markingTasks
.Include(mt => mt.task_Students)
.ThenInclude(ts => ts.task_Student_Markers)
.ThenInclude(tsm => tsm.marker) //Here, only want to select marker.name
.ToList();
问题是我在哪里可以做一个 select
子句来导航 属性 到 select 几个感兴趣的栏目?例如,目前 User
的所有属性都被 selected,但我只想要 User.name
.
我查了MSDN,好像include
子句里面不支持select
子句。
或者我必须把它分解成几个语句。
感谢提示
Include
和Select
是两个互斥的东西,不能在导航对象上同时设置。在我的例子中,它们都被解释为 left Join
,但是 Include
将 select 导航对象中的所有属性。我最终做了一些嵌套的 select
来定位 interset
var mts = context.markingTasks.Where(mt => mt.rubric.moduleConvenor.emailAddress == email && mt.task_Students.Count() != 0)
.Select(mt => new {
mt.name,
mt.moduleCode,
students = mt.task_Students.Select(ts => new {
ts.student.name,
ts.student.studentId,
markers = ts.task_Student_Markers.Select(tsm=>tsm.marker.userName).ToList()}).ToList()}).ToList();