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.

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top