0

我有以下 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 表中进行某种分组,然后从容量中减去总和。

4

1 回答 1

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;

如果 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

于 2011-07-26T09:35:44.307 回答