gpt4 book ai didi

C# 10 .Net 6 MinBy MaxBy Linq 投影到单个属性

转载 作者:行者123 更新时间:2023-12-03 08:14:34 28 4
gpt4 key购买 nike

在 C# 10 .Net 6 中新的 MinByMaxBy 调用之后是否有内联方法来投影属性?

double topPriceInList = prices.MaxBy(h => h.High)."Select(h => h.High)";

当然,Visual Studio 2021 不喜欢我尝试过的任何版本。

最佳答案

MaxBy(this IEnumerable<T>)MinBy(this IEnumerable<T>)不要返回IEnumerable<T> - 它们返回单个元素(即 T ),所以只需这样做:

double topPriceInList = prices.MaxBy(h => h.High).High;

也就是说,上面的代码不需要 MaxBy ,只需使用 Max :

double topPriceInList = prices.Max(h => h.High);

// or:

double topPriceInList = prices.Select(h => h.High).Max();

  • 请注意Min , Max , MinBy ,和MaxBy如果源集合为空(或者任何先前的 .Where 步骤消除了所有元素),都会在运行时抛出异常
  • ...所以您可能需要使用 MinOrDefault , MaxOrDefault , MaxByOrDefault ,或MaxByOrDefault ,在这种情况下使用空安全导航运算符 ?. (又名elvis-operator)。
    • 但请确保 ...OrDefault()扩展方法在 IEnumerable<Nullable<T>> 上调用和IEnumerable<T>因为default(T)对于值类型永远不会 null这是错误的常见来源。
double? topPriceInListOrNull = prices.Select(h => (double?)h.High).MaxOrDefault();

关于C# 10 .Net 6 MinBy MaxBy Linq 投影到单个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69818521/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com