我有以下3个类(映射到sql表)。
Places table:
Name(key)
Address
Capacity
Events table:
Name(key)
Date
Place
Orders table:
Id(key)
EventName
Qty
Places和Events表通过Places连接。名称=事件。Place,而Events和Orders表:Events。名称=订单。EventName。任务是给定一个事件,返回该事件留下的票。容量是一个地方可以容纳的数量,数量是某人订购的票的数量。因此,需要在Orders表中进行某种分组,然后从容量中减去总和。
类似这样的东西(下面的c#代码示例)?
很抱歉变量名很奇怪,但是event是一个关键字:)
我没有使用visual studio,所以我希望语法是正确的。
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;
如果Event有多个位置,最后两行看起来像这样:
int placesCapacity = Places.Where(pl => pl.Name == theEvent.Place)
.Sum(pl => pl.Capacity);
int ticketsLeft = placesCapacity - eventOrderNo;
旁注
LINQ 101是熟悉LINQ的好方法:http://msdn.microsoft.com/en-us/vcsharp/aa336746