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、空の を返す場合、これは爆発します。IEnumerableMinByMoreLinq
C# 6.0 より前では、これはおそらく別の拡張メソッド MinByOrDefaultを追加することで解決されていました。
次のように書き直します.Where(...)?.MinBy(...)。しかし、 ではなく空のコレクション.Whereを返すため、これは機能しません。null
.NullIfEmpty()これは、 の拡張メソッドを導入することで解決できますIEnumerable。に到着.Where(...).NullIfEmpty()?.MinBy()。
空のコレクションを返すことは、null.
これを行うための他のよりエレガントな方法はありますか?