【发布时间】:2011-01-04 10:19:15
【问题描述】:
将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"}
我可以将我的代码示例转换为扩展方法,但是有内置函数或更好的算法可以使用吗?
【问题讨论】:
-
你打算如何使用这个数据结构?在这种情况下,每个值有多个键是什么意思?
-
@lpthnc:我已经编辑了问题以试图澄清。
-
我在您接受后编辑我的答案,您可能对新版本感兴趣...
标签: c# linq data-structures dictionary lookup