¿Hay alguna forma en línea de proyectar propiedades después de las nuevas llamadas MinBy o MaxBy en C# 10 .Net 6?
double topPriceInList = prices.MaxBy(h => h.High)."Select(h => h.High)";Ciertamente a Visual Studio 2021 no le gusta ninguno de los que he probado.
MaxBy(this IEnumerable<T>) y MinBy(this IEnumerable<T>) no devuelven IEnumerable<T> ; devuelven elementos únicos (es decir, T ), así que solo haz esto:
double topPriceInList = prices.MaxBy(h => h.High).High; Dicho esto, el código anterior no necesita MaxBy , solo usa Max :
double topPriceInList = prices.Max(h => h.High); // or: double topPriceInList = prices.Select(h => h.High).Max();Min , Max , MinBy y MaxBy arrojarán una excepción en tiempo de ejecución si la colección de origen está vacía (o cualquier paso anterior .Where eliminaron todos los elementos)MinOrDefault , MaxOrDefault , MaxByOrDefault o MaxByOrDefault , en cuyo caso use el operador de navegación de seguridad nula ?. (también conocido como elvis-operador )....OrDefault() se invoque en IEnumerable<Nullable<T>> y no IEnumerable<T> porque default(T) para los tipos de valor nunca es null , lo que es una fuente frecuente de errores. double? topPriceInListOrNull = prices.Select(h => (double?)h.High).MaxOrDefault();