Is there a inline way to project properties after the new MinBy or MaxBy calls in C# 10 .Net 6?
double topPriceInList = prices.MaxBy(h => h.High)."Select(h => h.High)";
Certainly Visual Studio 2021 doesn't like any that I have tried.
MaxBy(this IEnumerable<T>) and MinBy(this IEnumerable<T>) don't return IEnumerable<T> - they return single elements (i.e. T), so just do this:
double topPriceInList = prices.MaxBy(h => h.High).High;
That said, that code above doesn't need MaxBy, just use Max:
double topPriceInList = prices.Max(h => h.High);
// or:
double topPriceInList = prices.Select(h => h.High).Max();
Min, Max, MinBy, and MaxBy will all throw an exception at runtime if the source collection is empty (or any previous .Where steps eliminated all elements)MinOrDefault, MaxOrDefault, MaxByOrDefault, or MaxByOrDefault, in which case use the null-safe navigation operator ?. (aka elvis-operator).
...OrDefault() extension-method is invoked on IEnumerable<Nullable<T>> and not IEnumerable<T> because default(T) for value-types is never null which is a frequent source of bugs.double? topPriceInListOrNull = prices.Select(h => (double?)h.High).MaxOrDefault();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With