在 C# 10 .Net 6 中的 newMinBy或MaxBy呼叫之后,是否有行內方式來投影屬性?
double topPriceInList = prices.MaxBy(h => h.High)."Select(h => h.High)";
當然,Visual Studio 2021 不喜歡我嘗試過的任何東西。
uj5u.com熱心網友回復:
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/346054.html
下一篇:UnhandledPromiseRejectionWarning:錯誤:找不到模塊“tailwindcss”heroku錯誤
