我有以下3个类(映射到sql表)。
Places table:
Name(key)
Address
Capacity
Events table:
Name(key)
Date
Place
Orders table:
Id(key)
EventName
Qty
Places和Events表通过Places.Name = Events.Place连接,而Events和Orders表:Events.Name = Orders.EventName。 任务是给定一个事件,返回为该事件留下的票。容量是一个地方可以容纳的数量,而数量是某人订购的门票数量。因此,需要在Orders表中进行某种分组,然后从容量中减去总和。
答案 0 :(得分:1)
这样的事情(下面的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;
如果事件有多个位置,最后两行将如下所示:
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