Lambda / LINQ查找多个多对多关系SQL表之间的关系

Mor*_*p25 3 c# linq sql-server lambda

我正在开展一个学校项目,其目标是创建一个可以处理多个洗衣店的系统,并具有适当的功能,例如洗衣机预订、用户处理等。

我有以下设计:

在此输入图像描述

其中一项任务是遍历我的所有洗衣店,并显示每个洗衣店的所有洗衣机已进行了多少预订。我一直试图找到我的预订表和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();
Run Code Online (Sandbox Code Playgroud)

但不确定如何继续。如何在多对多关系中找到相同的行?

Rob*_*Kee 5

您的查询可以简化为:

var queryList = _db.Laundries
  .Include(l=>l.LaundryMachines)
  .Include(l=>l.LaundryMachines.Select(lm=>lm.Reservations))
  .ToList();
Run Code Online (Sandbox Code Playgroud)

至于了解每间洗衣店有多少预订量:

var result=_db.Laundries
  .Select(l=> new {
    Laundry=l,
    ReservationCount=l.LaundryMachines.Sum(lm=>lm.Reservations.Count())
    });
Run Code Online (Sandbox Code Playgroud)

或者如果您只想使用原始查询结果:

foreach(var l in queryList)
{
   Console.WriteLine("{0} has {1} reservations",
     l.LaundryName,
     l.LaundryMachines.Sum(lm=>lm.Reservations.Count()));
}
Run Code Online (Sandbox Code Playgroud)