Если вы хотите чистый код Linq2SQL, вы должны получить объект TBUS:
var bus = yourDataContext.GetTable<TBus>().Where(bus => bus.BusTripId == busTripId).SingleOrDefault();
А затем переключить переменную сиденья, чтобы получить нужное поле:
var seat;
switch(seatNumber)
{
case "s1":
seat = bus.Seat1;
break;
case "s2":
seat = bus.Seat2;
break;
// And so it goes on...
}
Тем не менее, может делать чистый код SQL через Linq также или играть с отражением.
- EDIT
Как я уже сказал в комментарии, я считаю, ваша модель базы данных может быть улучшена. Мой совет будет наличие двух таблиц:
TBUS Таблица
TBusId - int [PK]
...
TBusSeat Таблица
TBusSeatId - int [PK]
TBusIs - int [FK referencing TBus.TBusId]
SeatNumber - int
...
Таким образом, у вас есть более естественную гибкость, чтобы иметь дело с теми, кто король ситуаций. Рассмотрим следующий набор данных:
TBUS Таблица
TBusId
------
1
2
TBusSeat Таблица
TBusSeatId | TBusId | SeatNumber | PassengerName
------------------------------------------------
1 1 1 Josh Doe
2 1 2 John Doe
3 1 3 Jane Doe
4 2 1 Jack Doe
Таким образом, чтобы иметь дело с нужным запросом с Linq2SQL, было бы просто, как это :
var seat = yourDataContext.GetTable<TBusSeat>().Where(seat => seat.TBusId == 1 && seat.SeatNumber == 2).SingleOrDefault();
И вызывать seat.PassengerName
приведет к John Doe
.
И IMHO, ваша модель базы данных перепутана. Было бы более гибким, если бы у вас была таблица «TBusSeat». – everton
привет EvertonAgner .. что вы подразумеваете под таблицей TBusSeat ..? в каждом автобусе есть 54 места, как вы можете это сделать ..? путем создания 54 таблиц.? который пропущен. – kamiran
Нет, друг мой. Мой совет будет состоять из двух таблиц: «TBus» и «TBusSeat». См. Мое редактирование для более подробной информации. – everton