使用linq选择最小值

Aba*_*oub 4 c# linq

我有一本词典

Dictionary<Location2D, int> h_scores = new Dictionary<Location2D, int>();
Run Code Online (Sandbox Code Playgroud)

我想选择Key // which is Location2D最小的int值.

我试过了

h_scores.Min().Key; // not working
h_scores.OrderBy(x => x.Value).Select(y=> y.Key).Min(); //error At least one object must implement IComparable.
Run Code Online (Sandbox Code Playgroud)

那么如何通过最小的int值选择一个键呢?

Jus*_*ner 7

你只需要使用Min的正确重载:

val minKey = h_scores.Min(s => s.Value).Key;
Run Code Online (Sandbox Code Playgroud)

更新

没注意Min的重载返回值.你肯定找MinBy从乔恩斯基特的morelinq:

val minKey = h_scores.MinBy(s => s.Value).Key;
Run Code Online (Sandbox Code Playgroud)