группировать и объединять таблицы в linq to sql - PullRequest
0 голосов
/ 26 июля 2011

У меня есть следующие 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. Задача состоит в том, чтобы с учетом события вернуть билеты, оставленные на это событие. Вместимость - это число, которое может занимать место, а Кол-во - это количество заказанных кем-то билетов. Таким образом, требуется некоторая группировка в таблице «Заказы», ​​а затем вычесть сумму из емкости.

1 Ответ

1 голос
/ 26 июля 2011

Примерно так (пример кода 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;

На sidenote
LINQ 101 - отличный способ познакомиться с LINQ: http://msdn.microsoft.com/en-us/vcsharp/aa336746

...