C#如何用循环替代多if语句从对象列表按指定字段筛选最大值对象
优化方案
你只需要遍历已经存在的BLibShelf图书列表,逐个判断实例的BCopies字段是否等于最大值即可,同时还可以顺便优化最大值的计算逻辑,避免手动逐个读取所有Book实例的BCopies:
- 首先在代码顶部引入LINQ命名空间,用来简化最大值计算逻辑
using System.Linq;
- 替换原有最大值计算和所有重复if判断的代码,修改为以下逻辑:
// 直接从图书列表计算BCopies最大值,不需要单独构造values列表 int maxBorrowCount = BLibShelf.Max(book => book.BCopies); // 遍历所有图书,判断是否符合最受欢迎读物的条件 foreach (Book book in BLibShelf) { if (book.BCopies == maxBorrowCount) { Console.WriteLine(book); } }
额外可选优化点
你现有Book类中的TotalCopy方法逻辑存在错误,当前返回的是BCopies + BCopies,按照字段含义总馆藏应该为在馆数量+借出数量,可修改为:
public int TotalCopy() { return Libcopies + BCopies; }
内容的提问来源于stack exchange,提问作者MsnimROD
相关产品推荐
相关产品推荐

