public static List<cHotel> GetHotelDataSource(cCity cityDataSource)
    {
        List<cHotelNameCheckIn> hotelNameCheckIns = new List<cHotelNameCheckIn>();

        for (int j = 0; j < cityDataSource.OrderItems.Count; j++)
        {
            cHotelNameCheckIn hc = new cHotelNameCheckIn();
            hc.CheckIn = cityDataSource.OrderItems[j].Profile.CheckInDate;
            hc.HotelName = cityDataSource.OrderItems[j].Room.Hotel.Name;
            hc.Hotel = cityDataSource.OrderItems[j].Room.Hotel;

            if (!hotelNameCheckIns.Contains(hc))
                hotelNameCheckIns.Add(hc);
        }

        List<cHotel> hotelDataSources = new List<cHotel>();

        for (int hotelIndex = 0; hotelIndex < hotelNameCheckIns.Count; hotelIndex++)
        {
            cHotel hotelDataSource = new cHotel();
            cHotelNameCheckIn hc = hotelNameCheckIns[hotelIndex];
            hotelDataSource.Hotel = hc.Hotel;
            hotelDataSource.RoomTypes = FilteHotelOrderItemsByHotelName(cityDataSource.OrderItems, hc.HotelName);
            hotelDataSource.RoomTypes = FilteHotelOrderItemsByCheckIn(hotelDataSource.RoomTypes, hc.CheckIn);
            hotelDataSource.CheckIn = hotelDataSource.RoomTypes[0].Profile.CheckInDate;
            hotelDataSource.CheckOut = hotelDataSource.RoomTypes[0].Profile.CheckOutDate;

            foreach (HotelOrderItem roomType in hotelDataSource.RoomTypes)
                hotelDataSource.TotalPrice += roomType.TotalPrice;

            hotelDataSources.Add(hotelDataSource);
        }
        return hotelDataSources;
    }
    public static List<cCity> GetCityDataSource(List<HotelOrderItem> HotelOrderItems)
    {
        //ҳ������ʾѡ�е�Hotel����ṹΪ3��DataList�����Ƕ�ף�
        //��һ��DataListΪCity���ڶ���ΪHotel��������ΪRoom��
        //���磬
        //Shanghai - ������� - Room #1 Double Room
        //                    - Room #2 Triple Room
        //         - Hilton   - Room #1 Twin Room
        //                    - Room #2 Triple Room
        //��һ��DataList����ԴΪList<cCity>
        //�ڶ���DataList����ԴΪList<cHotel>
        //�ڶ���DataList����ԴΪList<HotelOrderItem>

        //��City
        //�õ����ж����������City Name
        List<string> listCityName = new List<string>();

        for (int hotelOrderItemIndex = 0; hotelOrderItemIndex < HotelOrderItems.Count; hotelOrderItemIndex++)
        {
            //HotelOrderItem tempHotelMaterial = (HotelOrderItem)Utility.Transaction.CurrentTransactionObject.Items[hotelOrderItemIndex];
            HotelOrderItem tempHotelMaterial = (HotelOrderItem)HotelOrderItems[hotelOrderItemIndex];

            if (!listCityName.Contains(tempHotelMaterial.Room.Hotel.City.Name))
                listCityName.Add(tempHotelMaterial.Room.Hotel.City.Name);
        }

        List<cCity> listDataSource = new List<cCity>();

        for (int cityIndex = 0; cityIndex < listCityName.Count; cityIndex++)
        {
            cCity cityDataSource = new cCity();
            cityDataSource.CityName = listCityName[cityIndex];
            cityDataSource.OrderItems = FilteHotelOrderItemsByCityName(HotelOrderItems, cityDataSource.CityName);
            cityDataSource.Hotels = GetHotelDataSource(cityDataSource);
            listDataSource.Add(cityDataSource);
        }
        return listDataSource;
    }