将Lookup 转换为其他数据结构c#

我有一个

Lookup 

TElement指的是一串单词。 我想将Lookup转换为:

 Dictionary or List<List> ? 

我已经阅读了一些关于使用的文章

 Lookup 

但这对我来说还不够理解。 提前致谢。

您可以使用以下方法执行此操作:

  • Enumerable.ToDictionary
  • Enumerable.ToList

假设您有一个名为mylookupLookup ,其中包含多个单词的字符串,然后您可以将IGrouping值放入string[]并将整个内容打包到字典中:

 var mydict = mylookup.ToDictionary(x => x.Key, x => x.ToArray()); 

更新

阅读完评论后,我知道您的查询实际上想要做些什么(请参阅上一个问题 )。 您不必将其转换为字典或列表。 只需直接使用查找:

 var wordlist = " aa bb cc ccc ddd ddd aa "; var lookup = wordlist.Trim().Split().Distinct().ToLookup(word => word.Length); foreach (var grouping in lookup.OrderBy(x => x.Key)) { // grouping.Key contains the word length of the group Console.WriteLine("Words with length {0}:", grouping.Key); foreach (var word in grouping.OrderBy(x => x)) { // do something with every word in the group Console.WriteLine(word); } } 

此外,如果订单很重要,您始终可以通过OrderByOrderByDescending扩展方法对IEnumerable进行排序。

编辑:

查看上面编辑过的代码示例:如果要订购密钥,只需使用OrderBy方法即可。 您可以通过使用grouping.OrderBy(x => x)按字母顺序排序单词的方式相同。

查找是从键到值集合的映射的集合。 给定一个键,您可以获得相关值的集合:

 TKey key; Lookup lookup; IEnumerable values = lookup[key]; 

当它实现IEnumerable>您可以使用可枚举的扩展方法将其转换为您想要的结构:

 Lookup lookup = //whatever Dictionary dict = lookup.ToDictionary(grp => grp.Key, grp => grp.ToArray()); List> lists = lookup.Select(grp => grp.ToList()).ToList();