/// <summary> /// Static baseMethod allowing us to sort result sets. /// </summary> static public EvaluationResultSet[] SortResultSets(IEnumerable <EvaluationResultSet> resultSets, bool positiveSet, SortResultsEnum sortCriteria) { SortedDictionary <Decimal, EvaluationResultSet> dictionary = new SortedDictionary <Decimal, EvaluationResultSet>(); foreach (EvaluationResultSet resultSet in resultSets) { // All the different values are coded in the double. // As the last part is a unique index, so that if values match, sorting will still work properly. double sortBasedValue = 0; if (sortCriteria == SortResultsEnum.OriginalOrder) { sortBasedValue = dictionary.Count; } else if (sortCriteria == SortResultsEnum.Average) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositivePerPosition(); } else { sortBasedValue = resultSet.CalculateNegativePerPosition(); } } else if (sortCriteria == SortResultsEnum.Count) { if (positiveSet) { sortBasedValue = resultSet.PositiveEntries.Count; } else { sortBasedValue = resultSet.NegativeEntries.Count; } } else if (sortCriteria == SortResultsEnum.Percentage) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositiveWinningPercentage(); } else { sortBasedValue = resultSet.CalcualteNegativeWinningPercentage(); } } else if (sortCriteria == SortResultsEnum.Sum) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositiveSum(); } else { sortBasedValue = resultSet.CalculateNegativeSum(); } } else { System.Diagnostics.Debug.Fail("Sorting case not handled."); } dictionary.Add(new Decimal(100000000 * sortBasedValue) + new Decimal(dictionary.Count), resultSet); } EvaluationResultSet[] result = new EvaluationResultSet[dictionary.Count]; dictionary.Values.CopyTo(result, 0); return(result); }
/// <summary> /// Static baseMethod allowing us to sort result sets. /// </summary> public static EvaluationResultSet[] SortResultSets(IEnumerable<EvaluationResultSet> resultSets, bool positiveSet, SortResultsEnum sortCriteria) { SortedDictionary<Decimal, EvaluationResultSet> dictionary = new SortedDictionary<Decimal, EvaluationResultSet>(); foreach (EvaluationResultSet resultSet in resultSets) { // All the different values are coded in the double. // As the last part is a unique index, so that if values match, sorting will still work properly. double sortBasedValue = 0; if (sortCriteria == SortResultsEnum.OriginalOrder) { sortBasedValue = dictionary.Count; } else if (sortCriteria == SortResultsEnum.Average) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositivePerPosition(); } else { sortBasedValue = resultSet.CalculateNegativePerPosition(); } } else if (sortCriteria == SortResultsEnum.Count) { if (positiveSet) { sortBasedValue = resultSet.PositiveEntries.Count; } else { sortBasedValue = resultSet.NegativeEntries.Count; } } else if (sortCriteria == SortResultsEnum.Percentage) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositiveWinningPercentage(); } else { sortBasedValue = resultSet.CalcualteNegativeWinningPercentage(); } } else if (sortCriteria == SortResultsEnum.Sum) { if (positiveSet) { sortBasedValue = resultSet.CalculatePositiveSum(); } else { sortBasedValue = resultSet.CalculateNegativeSum(); } } else { System.Diagnostics.Debug.Fail("Sorting case not handled."); } dictionary.Add(new Decimal(100000000 * sortBasedValue) + new Decimal(dictionary.Count), resultSet); } EvaluationResultSet[] result = new EvaluationResultSet[dictionary.Count]; dictionary.Values.CopyTo(result, 0); return result; }