//--------------------------------------------------------------------------------------------------------- /// <summary> /// Группирование контрактов по указанному свойству /// </summary> /// <param name="property_name">Имя свойства для группировки</param> //--------------------------------------------------------------------------------------------------------- public void GroupContractBy(String property_name) { // 1) Превращаем в плоский список ListArray <CContract> flat_contracts = new ListArray <CContract>(); for (Int32 i = 0; i < mModels.Count; i++) { if (mModels[i] is CContract) { flat_contracts.Add(mModels[i] as CContract); } else { if (mModels[i] is CContractSet) { //CContractSet contract_set = mModels[i] as CContractSet; //for (Int32 j = 0; j < contract_set.mModels.Count; j++) //{ // if (contract_set.mModels[j] is CContract) // { // flat_contracts.Add(contract_set.mModels[j] as CContract); // } //} } } } // 2) Формируем группы ListArray <CContractSet> groups = new ListArray <CContractSet>(); for (Int32 i = 0; i < flat_contracts.Count; i++) { // 3) Ищем группу Int32 find_index = groups.Find((CContractSet contract_set) => { return(contract_set.Name == flat_contracts[i].CustomerName); }); if (find_index != -1) { // Такую группу нашли добавляем туда контракт groups[find_index].AddExistingModel(flat_contracts[i]); } else { // Группу не нашли, создаем с указанным именем и добавляем туда контракт CContractSet contract_set = new CContractSet(flat_contracts[i].CustomerName); contract_set.AddExistingModel(flat_contracts[i]); groups.Add(contract_set); } } // Обновляем список this.ClearModels(); this.AddExistingModels(groups); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Получение копии объекта /// </summary> /// <returns>Копия объекта</returns> //--------------------------------------------------------------------------------------------------------- public override System.Object Clone() { CContractSet clone = new CContractSet(); clone.mName = mName; for (Int32 i = 0; i < mModels.Count; i++) { clone.AddExistingModel(mModels[i].Clone() as ICubeXContractData); } clone.mNotCalculation = mNotCalculation; return(clone); }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Сравнение объектов для упорядочивания /// </summary> /// <param name="other">Сравниваемый объект</param> /// <returns>Статус сравнения объектов</returns> //--------------------------------------------------------------------------------------------------------- public Int32 CompareTo(CContractSet other) { return(mName.CompareTo(other.Name)); }