У меня есть словарь, в котором строки хранятся как ключи, а целые числа — как значения, представляющие слова и количество их повторений. Пользователь должен иметь возможность сортировать их по количеству использований или в алфавитном порядке по 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;
}