我有一个重叠关系的3类模型:
class worder {
int workerID
}
class shift {
int shiftID,
int workerID,
ICollection tasks //tasks for this shift and this worker
}
class task {
int workerID
int shiftID
}
如何填充包含各自.tasks的shift对象集合?类似的东西:
var q = from shift in db.shifts
.Include(s => s.tasks.Where(t=>t.shiftID == s.shiftID && t.workerID = s.workerID))
修改
我已成功使用投影来创建jethro建议的匿名类型。但我想返回强类型的班级班。那可能吗?还是换挡模型设计不好?
答案 0 :(得分:1)
您可以加入表格。
var joinedTables = from c in db.shifts
join p in db.tasks on c.ShiftID equals p.ShiftID & c.WorkerID equals p.WorkerID
select new {Shifts = c, Tasks = p };
请查看此Link以获取有关Linq联接的其他示例。
var shifts = db.shifts;
var tasks = db.tasks;
foreach(var shift in shifts)
{
var shiftID = shift.ShiftID;
var workerID = shift.WorkerID;
shift.tasks = tasks.Where(p=>p.shiftID == shiftID & p.WorkerID == workerID);
}
关于上述内容对我来说感觉“不对”,我认为如果你再次看一下你的设计是最好的,当你拉动轮班时,轮班的任务应该自动填充。