Let sagen, dass ich diese SQL-Abfrage haben:LINQ LEFT JOIN und GroupBy
SELECT
PromotionSlot.StaffFName,
SUM(PromotionSlot.Max_Occupancy) AS TOTAL,
SUM(DISTINCT(Booking.Quantity)) AS Occupied
From PromotionSlot
LEFT JOIN Booking
ON PromotionSlot.StaffID=Booking.StaffID
GROUP BY PromotionSlot.StaffFName
Ergebnis:
|StaffFName |TOTAL |Occupied|
-----------------------------------
|Jason |13 |1 |
|John Doe |9 |0 |
|Marry Jane |7 |2 |
Das ist mein DB-Tabelle:
PromotionSlot TABLE: ID(PK),Max_Occupancy,StaffFName..., StaffID(FK)
Booking TABLE: ID(PK), Quantity...,StaffID(FK)
Wie kann ich es übersetzen in LINQ? Dies ist mein Versuch:
var staffData =
(from ps in dc.PromotionSlots
join b in dc.Bookings on ps.StaffID = b.StaffID
group ps by ps.StaffFName into NewGroup
select new dataView
{
StaffFName = NewGroup.Key,
Total = NewGroup.Sum(a => a.Max_Occupancy),
//problem:
//Occupied = NewGroup.Sum(b => b.Quantity)
}
-Plan Occupied = NewGroup.Sum(b => b.Quantity)
zu haben, aber wenn ich versuche, die b
auf die quantity
Spalte von Booking
Tabelle zeigt es zeigt Fehler (rot-Linie) und ich denke, die Probleme kommt von group ps by ps.StaffFName into NewGroup
zur Verfügung stellt für PromotionSlot
Tabelle statt Booking
Tabelle. Aber ich habe keine Ahnung, wie ich das lösen soll!
Wenn Sie versuchen, 'x => x einzugeben. 'es zeigt immer noch die' ps' Tabellenspalte nur anstelle von 'b' Tabelle. –
J4X
Sie müssen beide Entitäten gruppieren new {ps, b} durch ps.StaffFName in NewGroup'. – juharr
@ J4X bitte überprüfen Sie jetzt. –