文字列をキーとして、intを単語とその出現回数を表す値として格納する辞書があります。ユーザーは、使用回数または1文字目のアルファベット順に並べ替えることができる必要があります。LINQは初めてですが、使用したいと思います。次のコードを使用して、開始文字に基づいて単語をグループ化することができました。
public string AlphabeticWordBuilder()
{
List<String> words = this.myWords.WordsAsList();
words.Sort();
return GroupWords(words);
}
private static string GroupWords(List<String> words)
{
String formatedWords = string.Empty;
var groups =
from w in words
group w by w.First();
foreach (var group in groups)
{
formatedWords += ("\n" + group.Key + ":\n");
foreach (var w in group)
{
formatedWords += (w);
}
}
return formatedWords;
}
ただし、この方法では、辞書のキーをリストに変換する必要があり、値が失われます。同様の方法で辞書を値でグループ化できるはずですが、アルファベット順で使用しているコードにキーと値の関係を組み込む方法がわかりません。誰かがLINQを使用して辞書を値でグループ化する例を投稿できますか?
また、LINQメソッドの構文を避け、可能であれば上記のLINQクエリ式の構文を引き続き使用したいと思います。
アルファベット順の出力例:
で始まる単語:
と冒険(電気ショック療法)
周波数による出力例:
1回出現する単語:
ものと問題
私がやろうとしていることの不完全な例:
public string FrecquincyWordBuilder()
{
string fromatedWords = string.Empty;
var groups =
from w in this.myWords
group w by w.value;
}