2011-07-26 74 views
0

我有以下3個類(映射到sql表)。group by和linq連接到sql的表

Places table: 
Name(key) 
Address 
Capacity 

Events table: 
Name(key) 
Date 
Place 

Orders table: 
Id(key) 
EventName 
Qty 

的地點和事件表通過Places.Name = Events.Place連接,而活動和訂單表:Events.Name = Orders.EventName。 任務是給定一個事件,返回該事件留下的票據。容量是一個地方可以容納的數量,Qty是某人訂購的門票數量。因此需要在Orders表中進行某種分組,然後從容量中減去總和。

回答

1

像這樣的東西(下面的C#代碼示例)?

對不起,對於奇怪的變量名稱,但事件是關鍵字:)
我沒有使用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

+0

謝謝你,你的回答指出我正確的方向,只有一點語法錯誤:代替.Sum(pl.Capacity)正確的語法是.Sum(pl => pl.Capacity)。但總體上很好的答案,也謝謝你與樣品的聯繫。 – rescueme

+0

我糾正了語法錯誤。謝謝! – Zyphrax