using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MarketData.MarketDataModel { public class WordDictionary : Dictionary> { public WordDictionary() { } public DictionaryCollection ToList() { DictionaryCollection dictionaryCollection=new DictionaryCollection(); List outerKeys=new List(this.Keys); foreach(String outerKey in outerKeys) { Dictionary innerDictionary=this[outerKey]; DictionaryCollection items=new DictionaryCollection(innerDictionary.Values.ToList()); dictionaryCollection.AddRange(items); } return dictionaryCollection; } public bool ContainsKeyAs(String word,String partOfSpeech) { if(!ContainsKey(word))return false; Dictionary items=this[word]; if(!items.ContainsKey(partOfSpeech))return false; return true; } } public class DictionaryElement { public DictionaryElement() { } public DictionaryElement(String word,String partOfSpeech) { Word=word; PartOfSpeech=partOfSpeech; } public String Word{get;set;} public String PartOfSpeech{get;set;} } public class DictionaryCollection : List { public DictionaryCollection() { } public DictionaryCollection(List dictionaryCollection) { foreach(DictionaryElement dictionaryElement in dictionaryCollection)Add(dictionaryElement); } public WordDictionary ToDictionary() { WordDictionary wordDictionary=new WordDictionary(); foreach(DictionaryElement dictionaryElement in this) { if(!wordDictionary.ContainsKey(dictionaryElement.Word)) { wordDictionary.Add(dictionaryElement.Word,new Dictionary()); } Dictionary items=wordDictionary[dictionaryElement.Word]; if(items.ContainsKey(dictionaryElement.PartOfSpeech))continue; items.Add(dictionaryElement.PartOfSpeech,dictionaryElement); } return wordDictionary; } } }