IEnumerable
将 an转换为类似查找或类似字典的结构但每个值有多个键的最佳方法是什么?
我正在寻找的是与此大致相同的东西,并且以一种通用的方式:
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"}
我可以将我的代码示例转换为扩展方法,但是是否有内置函数或更好的算法可供使用?