/*
         * //读取上次已选择的教室信息
         * public void ReadSelectClassroomsConfig()
         * {
         *  IEnumerable<int> classroomIds = systemConfig.GetArrayConfig<int>("MonitorClassrooms");
         *  if (null == classroomIds) return;
         *  treeViewModel.MarkSelectedClassrooms(classroomIds);
         *  QueryTerminalInfos(TreeViewModel.SelectedClassrooms);
         *  sortTerminalInfos();
         * }
         * //保存已选择的教室信息
         * public void WriteSelectClassroomsConfig()
         * {
         *  systemConfig.SetArrayConfig<int>("MonitorClassrooms", TreeViewModel.SelectedClassrooms.Select(p => p.Id).ToList());
         *  systemConfig.WriteConfig();
         * }
         */
        private void sortTerminalInfos()
        {
            /*
             * ObservableExtensions.Sort<TerminalInfo>(TerminalInfos, (a, b) => {
             *  ClassRoom aClassroom = treeViewModel.SelectedClassrooms.Where(p => p.TerminalId.Equals(a.TerminalId)).FirstOrDefault();
             *  ClassRoom bClassroom = treeViewModel.SelectedClassrooms.Where(p => p.TerminalId.Equals(b.TerminalId)).FirstOrDefault();
             *  if (null != aClassroom && null != bClassroom)
             *  {
             *      if (aClassroom.ClassroomBuilding.Ord.Equals(bClassroom.ClassroomBuilding.Ord))
             *      {
             *          return aClassroom.RoomNum.CompareTo(bClassroom.RoomNum);
             *      }
             *      else
             *      {
             *          return aClassroom.ClassroomBuilding.Ord.CompareTo(bClassroom.ClassroomBuilding.Ord);
             *      }
             *  }
             *  else if (null == aClassroom)
             *  {
             *      return -1;
             *  }
             *  else
             *  {
             *      return 1;
             *  }
             * });
             */

            ICollection <TerminalInfo> sortTerminalInfos = TerminalInfos.OrderBy(p => treeViewModel.SelectedClassrooms.Where(o => o.TerminalId.Equals(p.TerminalId)).Select(o => o.ClassroomBuilding).FirstOrDefault().Ord)
                                                           .ThenBy(p => treeViewModel.SelectedClassrooms.Where(o => o.TerminalId.Equals(p.TerminalId)).Select(o => o.RoomNum).FirstOrDefault()).ToList();

            for (int i = 0; i < sortTerminalInfos.Count; i++)
            {
                TerminalInfos.Move(TerminalInfos.IndexOf(sortTerminalInfos.ElementAt(i)), i);
            }
        }