/// <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); }