group by并将linq中的表连接到sql

时间:2011-07-26 09:21:47

标签: linq join linq-to-sql linq-group

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

1 个答案:

答案 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