我有一个字典,将字符串存储为键,将整数存储为表示单词及其出现次数的值。用户需要能够按使用次数或按字母顺序按第一个字母对它们进行排序。尽管我对它很陌生,但我更喜欢使用 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 查询表达式语法。
示例输出按字母顺序:
a开头的单词:
和冒险(等)
按频率输出的示例:
出现 1 次的单词:
东西和问题
我正在尝试做的一个不完整的例子:
public string FrecquincyWordBuilder()
{
string fromatedWords = string.Empty;
var groups =
from w in this.myWords
group w by w.value;
}