//Расчет конечных приоритетов и сортировка private void FinalCalculate() { //Пролистываем результатты первого критерия и добавляем в общий список (учитывая приогритет критерия) for (int i = 0; i < FirstCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.databaseId == FirstCriterionContainer[i].databaseId)) >= 0) { //DUNNO LOL } else { TotalResultUnit EntrantFinal = new TotalResultUnit(); EntrantFinal.databaseId = FirstCriterionContainer[i].databaseId; AllCriterionContainer.Add(EntrantFinal); } AllCriterionContainer.Find(x => x.databaseId == FirstCriterionContainer[i].databaseId).firstCriterionFinalPriority = FirstCriterionContainer[i].localPriority * _settings.FirstCriterionPriority; } //Потом тоже самое для 2 критерия for (int i = 0; i < SecondCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.databaseId == SecondCriterionContainer[i].databaseId)) >= 0) { //DUNNO LOL } else { TotalResultUnit EntrantFinal = new TotalResultUnit(); EntrantFinal.databaseId = SecondCriterionContainer[i].databaseId; AllCriterionContainer.Add(EntrantFinal); } AllCriterionContainer.Find(x => x.databaseId == SecondCriterionContainer[i].databaseId).secondCriterionFinalPriority = SecondCriterionContainer[i].localPriority * _settings.SecondCriterionPriority; } //Потом тоже самое для 3 критерия for (int i = 0; i < ThirdCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.databaseId == ThirdCriterionContainer[i].databaseId)) >= 0) { //DUNNO LOL } else { TotalResultUnit EntrantFinal = new TotalResultUnit(); EntrantFinal.databaseId = ThirdCriterionContainer[i].databaseId; AllCriterionContainer.Add(EntrantFinal); } AllCriterionContainer.Find(x => x.databaseId == ThirdCriterionContainer[i].databaseId).thirdCriterionFinalPriority = ThirdCriterionContainer[i].localPriority * _settings.ThirdCriterionPriority; } //Завершающее сложение и заполнение выходного словарая foreach (TotalResultUnit UserFinal in AllCriterionContainer) { UserFinal.absolutePriority = UserFinal.firstCriterionFinalPriority + UserFinal.secondCriterionFinalPriority + UserFinal.thirdCriterionFinalPriority; } //Сортировка AllCriterionContainer.Sort((x, y) => y.absolutePriority.CompareTo(x.absolutePriority)); }
//Критерий расстояний - расчеты приоритетов для всех подходящих направлений //Расчет конечных приоритетов и сортировка private List <TotalResultUnit> FinalCalculate() { //Пролистываем результатты первого критерия и добавляем в общий список (учитывая приогритет критерия) for (var i = 0; i < _firstCriterionContainer.Count; i++) { if ((_allCriterionContainer.FindIndex(x => x.DatabaseId == _firstCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var educationLineFinal = new TotalResultUnit(); educationLineFinal.DatabaseId = _firstCriterionContainer[i].DatabaseId; _allCriterionContainer.Add(educationLineFinal); } _allCriterionContainer.Find(x => x.DatabaseId == _firstCriterionContainer[i].DatabaseId) .FirstCriterionFinalPriority = _firstCriterionContainer[i].LocalPriority * _settings.FirstCriterionPriority; } //Потом тоже самое для 2 критерия for (var i = 0; i < _secondCriterionContainer.Count; i++) { if ((_allCriterionContainer.FindIndex(x => x.DatabaseId == _secondCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var educationLineFinal = new TotalResultUnit(); educationLineFinal.DatabaseId = _secondCriterionContainer[i].DatabaseId; _allCriterionContainer.Add(educationLineFinal); } _allCriterionContainer.Find(x => x.DatabaseId == _secondCriterionContainer[i].DatabaseId) .SecondCriterionFinalPriority = _secondCriterionContainer[i].LocalPriority * _settings.SecondCriterionPriority; } //Потом тоже самое для 3-го for (var i = 0; i < _thirdCriterionContainer.Count; i++) { if ((_allCriterionContainer.FindIndex(x => x.DatabaseId == _thirdCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var educationLineFinal = new TotalResultUnit(); educationLineFinal.DatabaseId = _thirdCriterionContainer[i].DatabaseId; _allCriterionContainer.Add(educationLineFinal); } _allCriterionContainer.Find(x => x.DatabaseId == _thirdCriterionContainer[i].DatabaseId) .ThirdCriterionFinalPriority = _thirdCriterionContainer[i].LocalPriorityFaculty * _settings.ThirdCriterionPriority * (1 - HeIprestigePart) + _thirdCriterionContainer[i].LocalPriorityHei * _settings.ThirdCriterionPriority * HeIprestigePart; } //Потом тоже самое для 4 критерия for (var i = 0; i < _fourthCriterionContainer.Count; i++) { if ((_allCriterionContainer.FindIndex(x => x.DatabaseId == _fourthCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL //ЕВГЕНИЙ: БЛЯЯЯ. ЧИтающий этот говнокод, да узри же тот же ужас и батхерт, который испытал я, пытаясь причесать его... } else { var educationLineFinal = new TotalResultUnit(); educationLineFinal.DatabaseId = _fourthCriterionContainer[i].DatabaseId; _allCriterionContainer.Add(educationLineFinal); } _allCriterionContainer.Find(x => x.DatabaseId == _fourthCriterionContainer[i].DatabaseId) .FourthCriterionFinalPriority = _fourthCriterionContainer[i].LocalPriority * _settings.FourthCriterionPriority; } //Завершающее сложение и заполнение выходного словарая foreach (var edLineFinal in _allCriterionContainer) { edLineFinal.AbsolutePriority = edLineFinal.FirstCriterionFinalPriority + edLineFinal.SecondCriterionFinalPriority + edLineFinal.ThirdCriterionFinalPriority + edLineFinal.FourthCriterionFinalPriority; } //Сортировка _allCriterionContainer.Sort((x, y) => y.AbsolutePriority.CompareTo(x.AbsolutePriority)); return(_allCriterionContainer); }
//Расчет конечных приоритетов и сортировка private void FinalCalculate() { //Пролистываем результатты первого критерия и добавляем в общий список (учитывая приогритет критерия) for (var i = 0; i < _firstCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.DatabaseId == _firstCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var entrantFinal = new TotalResultUnit(); entrantFinal.DatabaseId = _firstCriterionContainer[i].DatabaseId; AllCriterionContainer.Add(entrantFinal); } AllCriterionContainer.Find(x => x.DatabaseId == _firstCriterionContainer[i].DatabaseId) .FirstCriterionFinalPriority = _firstCriterionContainer[i].LocalPriority * _settings.FirstCriterionPriority; } //Потом тоже самое для 2 критерия for (var i = 0; i < _secondCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.DatabaseId == _secondCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var entrantFinal = new TotalResultUnit(); entrantFinal.DatabaseId = _secondCriterionContainer[i].DatabaseId; AllCriterionContainer.Add(entrantFinal); } AllCriterionContainer.Find(x => x.DatabaseId == _secondCriterionContainer[i].DatabaseId) .SecondCriterionFinalPriority = _secondCriterionContainer[i].LocalPriority * _settings.SecondCriterionPriority; } //Потом тоже самое для 3 критерия for (var i = 0; i < _thirdCriterionContainer.Count; i++) { if ((AllCriterionContainer.FindIndex(x => x.DatabaseId == _thirdCriterionContainer[i].DatabaseId)) >= 0) { //DUNNO LOL } else { var entrantFinal = new TotalResultUnit(); entrantFinal.DatabaseId = _thirdCriterionContainer[i].DatabaseId; AllCriterionContainer.Add(entrantFinal); } AllCriterionContainer.Find(x => x.DatabaseId == _thirdCriterionContainer[i].DatabaseId) .ThirdCriterionFinalPriority = _thirdCriterionContainer[i].LocalPriority * _settings.ThirdCriterionPriority; } //Завершающее сложение и заполнение выходного словарая foreach (var userFinal in AllCriterionContainer) { userFinal.AbsolutePriority = userFinal.FirstCriterionFinalPriority + userFinal.SecondCriterionFinalPriority + userFinal.ThirdCriterionFinalPriority; } //Сортировка AllCriterionContainer.Sort((x, y) => y.AbsolutePriority.CompareTo(x.AbsolutePriority)); }