C# 6.0 では、null 条件演算子が導入されました。これは大きなメリットです。
今、私はそれと同様に動作する演算子を持ちたいと思っていますが、空のコレクション用です。
Region smallestFittingFreeRegion = FreeRegions
.Where(region => region.Rect.W >= width && region.Rect.H >= height)
.MinBy(region => (region.Rect.W - width) * (region.Rect.H - height));
コレクションが空の場合、 (from ) は例外をスローするためWhere
、空の を返す場合、これは爆発します。IEnumerable
MinBy
MoreLinq
C# 6.0 より前では、これはおそらく別の拡張メソッド MinByOrDefault
を追加することで解決されていました。
次のように書き直します.Where(...)?.MinBy(...)
。しかし、 ではなく空のコレクション.Where
を返すため、これは機能しません。null
.NullIfEmpty()
これは、 の拡張メソッドを導入することで解決できますIEnumerable
。に到着.Where(...).NullIfEmpty()?.MinBy()
。
空のコレクションを返すことは、null
.
これを行うための他のよりエレガントな方法はありますか?