指定された長さ (double として) のエッジのリストがあるとします。ここで、最大長のエッジを見つけたいと考えています。LINQ でこれを行う簡単な方法はありますか?
もちろん、最初に Max で最大値を計算してから比較を行うこともできますが、まず、これは 2 つの計算になり、次に double が等しいかどうかを比較することは悪いことです。
助言がありますか?
Jon SkeetはMaxBy
彼のMoreLINQライブラリにあります:http ://code.google.com/p/morelinq
または、
e.OrderByDescending(x => x.SomeProperty).First();
彼女は私を正しい答えに打ち負かしたので、これを使用して、欠陥のある可能性のある仮定に注意します。
...第二に、等しいかどうかを比較するのは悪いことです。
IIRC では、コピーされた double が等しいかどうかを比較しても問題はありません。結局、それはわずか8バイトです。問題は計算で発生します - または異なるソースからの 2 つの同様の値を使用します。
とはいえ、浮動小数点数を比較するのが怖いのは良いことです:P