using System; using System.Collections.Generic; using System.Linq; namespace MarketData.MarketDataModel { public class EconomicIndicators : List { public EconomicIndicators() { } public EconomicIndicators(List economicIndicators) { foreach(EconomicIndicator economicIndicator in economicIndicators) { Add(economicIndicator); } } public List GetYears() { if(0==Count)return null; List years = (from EconomicIndicator economicIndicator in this select economicIndicator.Year).Distinct().ToList(); years.Sort(); return years; } public Dictionary GetDictionary() { Dictionary dictionary=new Dictionary(); if(0==Count)return null; for (int index = 0; index < Count; index++) { EconomicIndicator economicIndicator=this[index]; if(!dictionary.ContainsKey(economicIndicator.CountryCode)) { List list=new List(); dictionary.Add(economicIndicator.CountryCode,new EconomicIndicators()); } EconomicIndicators economicIndicators=dictionary[economicIndicator.CountryCode]; economicIndicators.Add(economicIndicator); } List keys=new List(dictionary.Keys); foreach(String key in keys) { dictionary[key].Sort(new EconomicIndicatorByYear()); } return dictionary; } } public class EconomicIndicatorByYear : IComparer { public int Compare(EconomicIndicator p1,EconomicIndicator p2) { return p1.Year.CompareTo(p2.Year); } } public class EconomicIndicator { public String Source{get;set;} public String CountryName{get;set;} public String CountryCode{get;set;} public String IndicatorName{get;set;} public String IndicatorCode{get;set;} public double IndicatorValue{get;set;} public int Year{get;set;} } }