Мне нужно получить весь список номеров с подробной информацией о бронировании и гостем, если есть какая-либо бронь с окном. объединить 3 таблицы, используя LINQ с ef. Вот как я это сделал.
var _list = (
from G in _DbEntity.ReservationGuestDetail
join R in _DbEntity.Room
on G.RoomNumber equals R.RoomNumber
join RE in _DbEntity.Reservation on G.ReservationNumber equals RE.ReservationNumber into RR
from Res in RR.DefaultIfEmpty()
where
G.Pmscustcode == PMSCustCode &&
R.PmsCustCode == PMSCustCode &&
R.IsDeleted == false &&
G.IsDeleted == false &&
Res.IsDeleted == false &&
Res.Pmscustcode == PMSCustCode
select new
{
RoomId = R.RoomId,
RoomNumber = R.RoomNumber,
RoomType = R.RoomTypeName,
ReservationDateFrom = G.ArrivalDateTime,
ReservationDateTo = G.DepartureDateTime,
ReservationNumber = Res.ReservationNumber,
ReservationStatus = Res.ReservationStatus,
GuestName = G.GuestFirstName + " " + G.GuestLastName
}
).OrderBy(x => x.RoomId).ToList();
ОБНОВЛЕНИЕ: С помощью этого кода, его возврат только по бронированным номерам. Но мне нужно получить все номера, если есть заказ или нет.
Ответ:
[
{
"roomId": 1,
"roomNumber": "K100",
"roomType": "Standard King",
"guestName": "Test user",
"reservationStatus": "Expected",
"reservationNumber": "20",
"reservationDateFrom": "2020-03-31",
"reservationDateTo": "2020-04-02"
},
{
"roomId": 2,
"roomNumber": "K101",
"roomType": "Standard King",
"guestName": "",
"reservationStatus": "",
"reservationNumber": "",
"reservationDateFrom": "",
"reservationDateTo": ""
},
{
"roomId": 3,
"roomNumber": "K102",
"roomType": "Standard King",
"guestName": "",
"reservationStatus": "",
"reservationNumber": "",
"reservationDateFrom": "",
"reservationDateTo": ""
}]