我正在开展一个学校项目,其目标是创建一个系统,可以处理多个具有适当功能的洗衣店,如预约洗衣机,用户处理等。
我有以下设计:
其中一项任务是遍历我的所有洗衣店,并显示每个洗衣店的所有洗衣机都有多少预订。我一直试图在我的预订表和laundrymachine
表之间找到相同的关系。
我有以下代码:
var queryList = (from laundry in _db.Laundries
join laundryMachine in _db.LaundryMachines on laundry.LaundryID equals laundryMachine.LaundryID
join res in _db.Reservations on laundryMachine.Reservations.Where(x => x.LaundryMachines.Select(z => z.MachineID) == res.MachineID)
select laundry).ToList();
但不确定如何继续。如何在多对多关系中找到相同的行?
答案 0 :(得分:3)
您的查询可以简化为:
var queryList = _db.Laundries
.Include(l=>l.LaundryMachines)
.Include(l=>l.LaundryMachines.Select(lm=>lm.Reservations))
.ToList();
至于了解每件衣物的预订量:
var result=_db.Laundries
.Select(l=> new {
Laundry=l,
ReservationCount=l.LaundryMachines.Sum(lm=>lm.Reservations.Count())
});
或者如果您只想使用原始查询结果:
foreach(var l in queryList)
{
Console.WriteLine("{0} has {1} reservations",
l.LaundryName,
l.LaundryMachines.Sum(lm=>lm.Reservations.Count()));
}