当前位置:  开发笔记 > 编程语言 > 正文

如何在C#中使用LINQ从Dictionary转换为SortedDictionary?

如何解决《如何在C#中使用LINQ从Dictionary转换为SortedDictionary?》经验,为你挑选了3个好方法。

我有一个Dictionary,我想将其转换为SortedDictionary.如何在C#3.0中使用LINQ扩展方法执行此操作?

编辑:当Marc和Jared回答时,通用尖括号不在原始问题中.



1> Marc Gravell..:

编辑此答案是在编辑之前; 要获得更新问题的答案,请参阅此回复.

为什么要使用LINQ?有一个构造函数:

new SortedDictionary(existing);

你可以一个ToSortedDictionary- 但我不会打扰......



2> JaredPar..:

不需要LINQ.SortedDictionary有一个构造函数来进行转换.

public SortedDictionary Convert(Dictionary map) {
  return new SortedDictionary(map);
}



3> Andrew Hare..:

看起来好像你要求一种优雅的方式来Dictionary把它变成一个SortedDictionary(注意它的值Dictionary现在是关键SortedDictionary).我没有看到任何答案解决这个问题.

您可以创建一个如下所示的扩展方法:

static class Extensions
{
    public static Dictionary 
         AsInverted(this Dictionary source)
    {
        var inverted = new Dictionary();

        foreach (KeyValuePair key in source)
            inverted.Add(key.Value, key.Key);

        return inverted;
    }
}

您的应用程序代码如下所示:

using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var dict = new Dictionary();
        dict.Add("four", 4);
        dict.Add("three", 3);
        dict.Add("two", 2);
        dict.Add("five", 5);
        dict.Add("one", 1);

        var sortedDict = new SortedDictionary(dict.AsInverted());
    }
}

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有