Esempio n. 1
0
        /// <summary>
        /// 同类型房间重复出现时,只选择唯一的一个,避免重复
        /// </summary>
        /// <param name="listRound_3"></param>
        /// <returns></returns>
        private List <String> parse_5_Round_RoomType_Uniqueness_Handle(List <String> listRound_3)
        {
            //[RoomID]:register_table.CheckRoom

            //注: 不生成新的返回List,而是对listRound_3进行修改后返回

            //保证listRound_3中的每一项都不为空,而且只有一个房间
            for (int i = 0; i < listRound_3.Count; i++)
            {
                String   roomID   = listRound_3[i];
                String[] room_arr = CSTR.splitRooms(roomID);

                //确保不为空
                if (CSTR.isEmpty(roomID) || CSTR.splitRoomsCount(room_arr) <= 0)
                {
                    listRound_3[i] = VALID_ROOM_ID;
                    continue;
                }

                //确保只有一个房间
                if (room_arr.Length > 1)
                {
                    //超过一个房间,则取第一个
                    listRound_3[i] = room_arr[0];
                }
            }


            //同类房间如果有重复,需要从中选择唯一的一个房间
            List <String> listSameType_RoomCluster = new List <string>();

            listSameType_RoomCluster.Add("[302][303][304][305][405]");
            listSameType_RoomCluster.Add("[306][307][401][402][403][404]");
            listSameType_RoomCluster.Add("[309][311]");
            listSameType_RoomCluster.Add("[308][312][313]");
            listSameType_RoomCluster.Add("[324][325][326]");
            listSameType_RoomCluster.Add("[322][406]");
            //保存listRound_3中的同类房间
            List <String> listExistRooms = new List <string>();

            for (int i = 0; i < listSameType_RoomCluster.Count; i++)
            {
                listExistRooms.Add("");
            }

            //获取listRound_3中的同类房间串
            foreach (String roomID in listRound_3)
            {
                for (int i = 0; i < listSameType_RoomCluster.Count; i++)
                {
                    String room_cluster_full = listSameType_RoomCluster[i];
                    if (room_cluster_full.IndexOf(roomID) >= 0)
                    {
                        //读取目前保存的同类房间串
                        String room_exist = listExistRooms[i];
                        //先清除,再添加,不会重复出现同一个RoomID
                        room_exist  = room_exist.Replace(roomID, "");
                        room_exist += roomID;
                        //重新保存
                        listExistRooms[i] = room_exist;
                    }
                } //end for
            }     //end foreach

            //判断是否重复
            for (int i = 0; i < listExistRooms.Count; i++)
            {
                String   rooms_id = listExistRooms[i];
                String[] room_arr = CSTR.splitRooms(rooms_id);
                if (CSTR.splitRoomsCount(room_arr) <= 1)
                {
                    continue;
                }

                //两个或以上同类房间,出现重复
                String strSel = "";
                //获取未关闭的房间
                String   strActive  = get_active_RoomID_Cluster(rooms_id);
                String[] arr_active = CSTR.splitRooms(strActive);
                if (CSTR.isEmpty(strActive) || CSTR.splitRoomsCount(arr_active) <= 0)
                {
                    //如果重复房间都关闭,则直接选择第一个
                    strSel = room_arr[0];
                }
                else
                {
                    //选择已开启房间的第一个
                    strSel = arr_active[0];
                }

                //更新到listRound_3
                for (int i_round_3 = 0; i_round_3 < listRound_3.Count; i_round_3++)
                {
                    String room_round_3 = listRound_3[i_round_3];
                    if (rooms_id.IndexOf(room_round_3) >= 0)
                    {
                        if (false == CSTR.isEmpty(strSel))
                        {
                            //更新,去除多个重复同类房间,修改为唯一的一个
                            listRound_3[i_round_3] = strSel;
                        }
                    }
                }
            }//end for

            return(listRound_3);
        }