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 で接続されます。タスクは、イベントが与えられた場合に、そのイベントに残されたチケットを返すことです。キャパシティは場所が保持できる数で、Qty は誰かが注文したチケットの数です。したがって、Orders テーブルで何らかのグループ化が必要であり、その合計をキャパシティから減算します。

4

1 に答える 1

1

このようなもの(以下のC#コードサンプル)?

奇妙な変数名で申し訳ありませんが、イベントはキーワードです:)
私はビジュアルスタジオを使用していないので、構文が正しいことを願っています.

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;

イベントに複数の場所がある場合、最後の 2 行は次のようになります。

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 に答える