public ObservableCollection<Words> LoadWordsDictionary(String selectedCulture) { ObservableCollection<Words> myReturnCollection = new ObservableCollection<Words>(); String myLine; String myText; String[] myWords; Words myWordsObject; System.IO.StreamReader textstream; try { textstream = new System.IO.StreamReader("Extensions\\Face2Speech\\Dictionary\\words_" + selectedCulture + ".txt", System.Text.Encoding.UTF8); } catch (Exception) { textstream = new System.IO.StreamReader("Extensions\\Face2Speech\\Dictionary\\words_de-DE.txt", System.Text.Encoding.UTF8); } while (textstream.Peek() >= 0) { myLine = textstream.ReadLine(); myText = myLine.ToUpper(); myWordsObject = new Words(); myWordsObject.NextWords = new List<String>(); if (myLine.IndexOf(";") > 0) { //Wenn ; vorhanden, dann sind auch sinnvolle darauffolgende Wörter vorhanden, die gespeichert werden. myWords = myLine.Split(new Char[] { ';' }); for (int i = 0; i < myWords.Length; i++) { myText = myWords[i].ToUpper(); if (i == 0) { myWordsObject.Text = myText; } else { myWordsObject.NextWords.Add(myWords[i].ToUpper()); } } } else { myWordsObject.Text = myText; } myReturnCollection.Add(myWordsObject); } return myReturnCollection; }
public ObservableCollection<Words> GetFirstLines(ObservableCollection<Words> AllWords, String LastWord, SearchType mySearchType) { ObservableCollection<Words> myReturnCollection = new ObservableCollection<Words>(); Dictionary<String, Words> addedWords = new Dictionary<string, Words>(); Words newWord; IEnumerable<Words> proposalWords; if (mySearchType == SearchType.All || mySearchType == SearchType.OnlyEqual) { proposalWords = AllWords.Where(myWord => myWord.Text.Equals(LastWord)).OrderBy(x => x.Text.Length).Take(10); proposalWords.ToList().ForEach(myWord => { if (!addedWords.ContainsKey(myWord.Text) && myReturnCollection.Count < 10) { Number = Number + 1; if (Number <= 10) { if (Number == 10) { Number = 0; } addedWords.Add(myWord.Text, myWord); newWord = new Words(); newWord.Text = string.Format("{0}: {1}", Number, myWord.Text); newWord.NextWords = myWord.NextWords; myReturnCollection.Add(newWord); } } }); if (myReturnCollection.Count == 0) { Number = Number + 1; if (Number <= 10) { if (Number == 10) { Number = 0; } newWord = new Words(); newWord.Text = string.Format("{0}: {1}", Number, LastWord); //newWord.NextWords = myWord.NextWords; myReturnCollection.Add(newWord); } } } if (mySearchType == SearchType.All || mySearchType == SearchType.OnlyStartsWith) { proposalWords = AllWords.Where(myWord => myWord.Text.StartsWith(LastWord)).OrderBy(x => x.Text.Length).Take(10); proposalWords.ToList().ForEach(myWord => { if (!addedWords.ContainsKey(myWord.Text) && myReturnCollection.Count < 10) { Number = Number + 1; if (Number <= 10) { if (Number == 10) { Number = 0; } addedWords.Add(myWord.Text, myWord); newWord = new Words(); newWord.Text = string.Format("{0}: {1}", Number, myWord.Text); newWord.NextWords = myWord.NextWords; myReturnCollection.Add(newWord); } } }); } return myReturnCollection; }