public IEnumerable<MatchedPolicy> Sort(IEnumerable<MatchedPolicy> policies) { if(policies == null) throw new ArgumentNullException("policies"); if(!policies.Any()) return policies; policies = Filter(policies); var speeds = OrderStatisticService.QuerySpeed(policies.Select(p => p.Provider).Distinct(), m_carrier); policies.ForEach(p => p.SetSpeed(speeds[p.Provider])); if(policies.Count() < 2) return policies; var result = policies.ToList(); result.Sort(comparer); return result; }
public IEnumerable<MatchedPolicy> Sort(IEnumerable<MatchedPolicy> policies) { if(policies == null) throw new ArgumentNullException("policies"); policies = policies.Where(p => p.PolicyType == PolicyType.Special).ToList(); if(!policies.Any()) return policies; var statisticInfos = OrderStatisticService.QuerySupplyStatisticInfo(policies.Select(p => p.Provider).Distinct(), m_departure, m_arrival); policies.ForEach(p => p.Statistics = statisticInfos[p.Provider]); if(policies.Count() < 2) return policies; var result = policies.ToList(); result.Sort(comparer); return result; }