如何在C#的ShowSort函数中按Time从小到大排序List<Islem>?
解决方案:按Time属性排序输出Islem列表
要解决这个问题,你有两种常用实现方式,可根据是否需要保留原列表顺序选择:
方法1:使用LINQ生成排序后的临时序列(不修改原列表)
这种方式不会改动category.Islemler原有的元素顺序,仅在输出时使用排序后的临时结果,适合不需要持久化排序状态的场景:
private static void ShowSort(Hat category) { // 按Time属性从小到大排序,生成临时序列 foreach (var product in category.Islemler.OrderBy(p => p.Time)) { Console.WriteLine($"{product.Name} : {product.Time} 秒."); } Console.WriteLine(""); }
方法2:直接对原List进行排序(修改原列表顺序)
如果希望后续使用category.Islemler时都保持排序后的状态,可以直接调用List自带的Sort方法,修改原列表的元素顺序:
private static void ShowSort(Hat category) { // 按Time属性从小到大排序原列表 category.Islemler.Sort((a, b) => a.Time.CompareTo(b.Time)); foreach (var product in category.Islemler) { Console.WriteLine($"{product.Name} : {product.Time} 秒."); } Console.WriteLine(""); }
补充说明
从你提供的代码来看,Time是值类型(int),无需处理null情况;如果后续Time改为可空类型(int?),可以在排序时补充null值处理,比如OrderBy(p => p.Time ?? 0)或在Sort比较器中增加null判断逻辑。
内容的提问来源于stack exchange,提问作者deadangel13
相关产品推荐
相关产品推荐

