首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#求获取一个Dictionary中value最小的key解决方法

2014-01-17 
C#求获取一个Dictionary中value最小的keyRT,求比较高效的解放方法[解决办法]minkey dict.Keys.Select(x

C#求获取一个Dictionary中value最小的key
RT,求比较高效的解放方法
[解决办法]
minkey = dict.Keys.Select(x => new { x, y = dict[x] }).OrderBy(x => x.y).First().x;
[解决办法]

Dictionary<string, int> dict = new Dictionary<string, int>();
            dict.OrderBy(d => d.Value).Select(d => d.Key).FirstOrDefault();

[解决办法]
(from d in dict orderby d.Value select d.Key).

引用:
Quote: 引用:

minkey = dict.Keys.Select(x => new { x, y = dict[x] }).OrderBy(x => x.y).First().x;


太厉害了,我都在发愁准备遍历呢,我知道这个是linq,就是不太精通,能详细的给我分析下原理吗?


这个是扩展方法,不是LINQ,LINQ是基于扩展方法的语法糖了,补一下LINQ的写法,一般都是和扩展方法一起使用的。


Dictionary<string, int> dict = new Dictionary<string, int>();
        dict.Add("1", 1);
        dict.Add("2", 2);
        dict.Add("3", 3);
        dict.Add("4", 4);
        dict.Add("5", 1);
        
        var minKey = (from d in dict orderby d.Value ascending select d.Key).First();
        //考虑到不止一条的情况,分两步查询最小值的所有Key,这样的写法可能更好看懂
        var allMinKeys = (from d in dict where d.Value == dict[minKey] select d.Key).ToArray();

热点排行