MinBy

        var minBy = list.Aggregate((a, b) => a.Age < b.Age ? a : b);
        Console.WriteLine(minBy);

お題はGroupBy、OrderByを使ってみる - waりとnaはてな日記のもの。ただの例題だと思うので(例だとGroupByを使う意味がないし)突っ込むとかそういうつもりはなく、そういえばRubyでいうmin_byってないなあ、と思ったので。Aggregateはとても素敵メソッドだと思うけど、いざ使おうと思うとあまり使うシーンがなくてとても悲しい。

Comment (2)

normalian : (07/31 01:09)

ネタ記事書いたものです。Aggregate使った場合だとこんなシンプルになるんですね・・・。
「とりあえずGroupByとOrderByを使ってみるか」程度で走り書きしたのですが、こちらを見て勉強になりました、ありがとうございます。

neuecc : (07/31 01:57)

コメントどもです。
Twitterのほうの話題ですが、最小/最大が複数個ある時は、年齢でグルーピングすると良さそう。
list.GroupBy(d => d.Age).Aggregate((a, b) => a.Key > b.Key ? a : b).ToArray();

C#標準でMinByといったようなものが入らないのは、複数個ある時に何が選ばれるかは「不定」
という状態を嫌ったから、なんでしょうかね、分かる気はします。
同様に無限Rangeや無限Reppeatがないのも、簡単に即死してしまうようなものを
標準では入れられない、と考えることにするととってもスッキリしたのですが、
IEnumerableにForEachを意地でも入れない(Zipはいれたのに!)のは納得が行かず……。

Name
WebSite(option)
Comment

Trackback(0) | http://neue.cc/2009/07/31_180.html/trackback

Search/Archive

Category

Profile


Yoshifumi Kawai
Microsoft MVP for Developer Technologies(C#)

April 2011
|
July 2021

Twitter:@neuecc
GitHub:neuecc
ils@neue.cc