我有一個簡化的物體結構,如下所示:
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在導航屬性上做一個子句來選擇一些感興趣的列?例如,目前,User正在選擇 的所有屬性,但我只想要User.name.
我查了MSDN,好像select里面的子句不支持這個include子句。或者我必須把它分解成幾個陳述。
謝謝你的提示
uj5u.com熱心網友回復:
Include和Select是兩個互斥的東西,不能在導航物件上同時設定。就我而言,它們都被解釋為left Join,但Include會選擇導航物件中的所有屬性。我最終做了一些嵌套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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431549.html
上一篇:如何比較Datatable和Array的月份之間的所有元素?
下一篇:將委托傳遞給Sort()
