【C#】Dictionary内で最小(最大)のValueをもつアイテムのKeyが知りたい

まとめ

ソートして、最初のやつ
よりも
最大値求めて、foreach
のほうが早そう

コード

最小のValueをもつアイテムのKeyを取得するサンプル

Dictionary<int,int> dict=new Dictionary<int,int>();

//ここでいろいろアイテムを追加する

int maxKey=dict.OrderBy(val=>val.Value).First().Key;

最大のValueのものが欲しい場合は適当に.OrderBy().OrderByDescending()にするなどしてください

書いてて思ったんですけど.Max()で求めた最大値を.Where()foreachかでその値を持つインデックス探すほうが早い気がする

実装にもよるけど
.Max()のオーダーは多分O(n)なので
.OrderBy()のオーダーがO(n \log n)だとしても.Max()のほうが早いかと

ただまあ.OrderBy()のほうは1行で簡単に書けるという利点(?)があるので要素数が少なくて速度を気にしなくていい場合などは使い道があるかも