读书人

C#求获取一个Dictionary中value最小的

发布时间: 2014-01-17 00:06:00 作者: rapoo

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();

读书人网 >C#

热点推荐