Gruppe nach und verbinden Tabellen in LINQ zu SQL
-
26-10-2019 - |
Frage
Ich habe die folgenden 3 Klassen (auf SQL -Tabellen abgebildet).
Places table:
Name(key)
Address
Capacity
Events table:
Name(key)
Date
Place
Orders table:
Id(key)
EventName
Qty
Die Plätze und Ereignis -Tabellen sind über Places.name = Ereignisse.PLAPE verbunden, während die Ereignisse und Bestellentabellen: Ereignisse.Name = orders.Eventname. Die Aufgabe ist, dass ein Ereignis die Tickets für dieses Ereignis zurückgeben. Kapazität ist die Nummer, die ein Ort halten kann, und Qty ist die Anzahl der von jemandem bestellten Tickets. Es ist also eine Art Gruppierung in der Bestellentabelle erforderlich und subtrahieren Sie dann die Summe von der Kapazität.
Lösung
So etwas (c# Code -Beispiel unten)?
Entschuldigung für die seltsamen Variablennamen, aber das Ereignis ist ein Schlüsselwort :)
Ich habe Visual Studio nicht verwendet, also hoffe ich, dass die Syntax korrekt ist.
string eventName = "Event";
var theEvent = Events.FirstOrDefault(ev => ev.Name == eventName);
int eventOrderNo = Orders.Count(or => or.EventName == eventName);
var thePlace = Places.FirstOrDefault(pl => pl.Name == theEvent.Place);
int ticketsLeft = thePlace.Capacity - eventOrderNo;
Wenn das Ereignis mehrere Orte hat, würden die letzten beiden Zeilen so aussehen:
int placesCapacity = Places.Where(pl => pl.Name == theEvent.Place)
.Sum(pl => pl.Capacity);
int ticketsLeft = placesCapacity - eventOrderNo;
Als Randnotiz
LINQ 101 ist eine großartige Möglichkeit, sich mit Linq vertraut zu machen: http://msdn.microsoft.com/en-us/vcsharp/aa336746