Как лучше всего преобразовать IEnumerable
в структуру, похожую на словарь или словарь, но с несколькими ключами на значение?
То, что я ищу, - это то, что делает примерно то же самое, что и это, и в общем виде:
var wordsByLetter = new Dictionary<char, HashSet<string>>();
foreach (string word in words)
{
foreach (char letter in word.Distinct())
{
if (!wordsByLetter.ContainsKey(letter))
{
wordsByLetter.Add(letter, new HashSet<string>());
}
wordsByLetter[letter].Add(word);
}
}
Таким образом, в результате получается словарь, отображающий каждую используемую букву в набор слов, содержащих эту букву.
Например, если words
содержит {"foo", "faz", "zoo"}
, то результирующий словарь будет содержать:
'a' -> {"faz"}
'f' -> {"foo", "faz"}
'o' -> {"foo", "zoo"}
'z' -> {"faz", "zoo"}
Я мог бы превратить мой пример кода в метод расширения, но есть ли встроенная функция или лучший алгоритм для использования?