/// <summary> /// Lấy danh sách các loại phòng khác nhau ở trên tàu /// </summary> /// <param name="cruise"></param> /// <returns></returns> public IList Rooms(Cruise cruise) { if (!_rooms.ContainsKey(cruise.Id)) { IList rooms = _module.RoomGetAll(cruise); IList roomtypes = new ArrayList(); // Kiểm tra đã có bảng map tàu/ loại phòng trong từ điển hay chưa, nếu chưa thì tạo mới Dictionary <string, int> roomMap = new Dictionary <string, int>(); if (RoomCountMap.ContainsKey(cruise.Id)) { RoomCountMap[cruise.Id] = roomMap; } else { RoomCountMap.Add(cruise.Id, roomMap); } foreach (Room room in rooms) { if (!roomMap.ContainsKey(string.Format("{0}#{1}", room.RoomClass.Id, room.RoomType.Id))) { roomMap.Add(string.Format("{0}#{1}", room.RoomClass.Id, room.RoomType.Id), 1); roomtypes.Add(room); // Nếu là loại chưa có trong từ điển thì thêm vào danh sách loại } else { roomMap[string.Format("{0}#{1}", room.RoomClass.Id, room.RoomType.Id)] += 1; } } _rooms.Add(cruise.Id, roomtypes); } return(_rooms[cruise.Id]); }