最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#之List移除某個(gè)屬性值中最大的值方式

 更新時(shí)間:2026年06月05日 09:52:28   作者:hefeng_aspnet  
這段個(gè)方法教你如何在C#中移除ListListList中屬性值最大的大的元素,涵蓋.NET6的MaxBy、MaxFirst/與RemoveAll等種實(shí)現(xiàn)方式,助你高效管理列表數(shù)據(jù)

在 C# 中移除 List 中某個(gè)屬性值最大的元素,通常分為兩步:首先找到該最大值對(duì)應(yīng)的對(duì)象(或最大值本身),然后從列表中移除它。

以下是幾種常見(jiàn)的實(shí)現(xiàn)方式,根據(jù) .NET 版本和需求選擇:

方法一:使用 MaxBy(推薦,.NET 6+)

如果你使用的是 .NET 6 或更高版本,MaxBy 是最簡(jiǎn)潔且高效的方法,它直接返回具有最大屬性值的對(duì)象。

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
    public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Score { get; set; }
        public override string ToString() => $"Id:{Id}, Name:{Name}, Score:{Score}";
    }
    public static void Main()
    {
        var list = new List<Item>
        {
            new Item { Id = 1, Name = "A", Score = 10 },
            new Item { Id = 2, Name = "B", Score = 50 }, // 最大值
            new Item { Id = 3, Name = "C", Score = 30 }
        };
        Console.WriteLine("移除前:");
        list.ForEach(i => Console.WriteLine(i));
        // 1. 找到 Score 屬性最大的對(duì)象
        // MaxBy 返回的是對(duì)象本身,如果有多個(gè)最大值,返回第一個(gè)
        var maxItem = list.MaxBy(x => x.Score);
        if (maxItem != null)
        {
            // 2. 從列表中移除該對(duì)象
            list.Remove(maxItem);
        }
        Console.WriteLine("\n移除后:");
        list.ForEach(i => Console.WriteLine(i));
    }
}

代碼說(shuō)明:

  • 1. 使用 MaxBy 直接獲取屬性值最大的對(duì)象引用,避免二次查找。
  • 2. 調(diào)用 Remove 方法移除該引用指向的對(duì)象。
  • 3. 需確保項(xiàng)目目標(biāo)框架為 .NET 6+。

方法二:使用 Max + First/FirstOrDefault(兼容舊版本)

在 .NET 5 及更早版本中,可以先用 Max 獲取最大屬性值,再用 First 或 Where 找到對(duì)應(yīng)對(duì)象并移除。

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
    public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Score { get; set; }
        public override string ToString() => $"Id:{Id}, Name:{Name}, Score:{Score}";
    }
    public static void Main()
    {
        var list = new List<Item>
        {
            new Item { Id = 1, Name = "A", Score = 10 },
            new Item { Id = 2, Name = "B", Score = 50 },
            new Item { Id = 3, Name = "C", Score = 30 }
        };
        if (list.Any())
        {
            // 1. 獲取最大的屬性值
            int maxScore = list.Max(x => x.Score);
            // 2. 找到第一個(gè)具有該最大值的對(duì)象
            var itemToRemove = list.FirstOrDefault(x => x.Score == maxScore);
            if (itemToRemove != null)
            {
                // 3. 移除
                list.Remove(itemToRemove);
            }
        }
        list.ForEach(i => Console.WriteLine(i));
    }
}

代碼說(shuō)明:

  • 1. 先計(jì)算最大值,再遍歷查找匹配的對(duì)象。
  • 2. 此方法會(huì)遍歷列表兩次(一次 Max,一次 FirstOrDefault),性能略低于 MaxBy 或單次循環(huán)。
  • 3. 適用于所有支持 LINQ 的 .NET 版本。

方法三:使用 RemoveAll(移除所有最大值)

如果存在多個(gè)對(duì)象擁有相同的最大屬性值,且你希望全部移除,可以使用 RemoveAll

using System;
using System.Collections.Generic;
using System.Linq;
public class Program
{
    public class Item
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Score { get; set; }
        public override string ToString() => $"Id:{Id}, Name:{Name}, Score:{Score}";
    }
    public static void Main()
    {
        var list = new List<Item>
        {
            new Item { Id = 1, Name = "A", Score = 50 }, // 最大值
            new Item { Id = 2, Name = "B", Score = 50 }, // 最大值
            new Item { Id = 3, Name = "C", Score = 30 }
        };
        if (list.Any())
        {
            int maxScore = list.Max(x => x.Score);
            // 移除所有 Score 等于 maxScore 的元素
            list.RemoveAll(x => x.Score == maxScore);
        }
        list.ForEach(i => Console.WriteLine(i));
    }
}

代碼說(shuō)明:

  • 1. 先獲取最大值。
  • 2. 使用 RemoveAll 一次性移除所有符合條件的元素。
  • 3. 適合需要清理所有并列最大值場(chǎng)景。

注意事項(xiàng)

  1. 空集合檢查‌:在調(diào)用 Max 或 MaxBy 之前,務(wù)必檢查列表是否為空(使用 Any() 或判斷 Count > 0),否則會(huì)拋出 InvalidOperationException
  2. 引用類型移除‌:List.Remove 依賴于對(duì)象的相等性比較。對(duì)于引用類型,默認(rèn)比較引用地址。上述方法中,我們移除的是從列表中取出的同一引用對(duì)象,因此能成功移除。如果是新建一個(gè)屬性值相同但引用不同的對(duì)象,Remove 將失敗。
  3. 性能‌:MaxBy 是單次遍歷,性能最優(yōu)。Max + First 是兩次遍歷。OrderByDescending().First() 也是常見(jiàn)寫法,但排序開(kāi)銷較大(O(N log N)),不建議僅為了取最大值而使用排序。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C#編寫的生辰八字計(jì)算程序

    C#編寫的生辰八字計(jì)算程序

    這篇文章主要介紹了C#編寫的生辰八字計(jì)算程序,假設(shè)一個(gè)人的公歷出生時(shí)間,范圍必須要在2012-2015年之間,因?yàn)楸臼纠绦蛑惶峁┝诉@幾年的農(nóng)歷數(shù)據(jù),小伙伴們參考下,可以自由擴(kuò)展
    2015-03-03
  • 詳解如何在C#中處理空值

    詳解如何在C#中處理空值

    在任何編程語(yǔ)言中開(kāi)發(fā)應(yīng)用程序時(shí),經(jīng)常會(huì)遇到空異?;蚩找卯惓?,那么下面讓我們探討一下在C#中處理空值的各種方法吧,需要的可以收藏下
    2023-07-07
  • Ruby創(chuàng)建數(shù)組方法總結(jié)

    Ruby創(chuàng)建數(shù)組方法總結(jié)

    在本篇文章里小編給大家分享了關(guān)于Ruby創(chuàng)建數(shù)組方法的知識(shí)點(diǎn)內(nèi)容,對(duì)戲有興趣的朋友們學(xué)習(xí)下。
    2019-01-01
  • C# async await 異步編程實(shí)現(xiàn)機(jī)制詳解

    C# async await 異步編程實(shí)現(xiàn)機(jī)制詳解

    async/await是C# 5.0 引入的語(yǔ)法糖,它基于**狀態(tài)機(jī)(State Machine)**模式實(shí)現(xiàn),將異步方法轉(zhuǎn)換為編譯器生成的狀態(tài)機(jī)類,本文給大家介紹C# async await 異步編程實(shí)現(xiàn)機(jī)制,感興趣的朋友一起看看吧
    2025-08-08
  • C#中this的使用實(shí)例分析

    C#中this的使用實(shí)例分析

    這篇文章主要介紹了C#中this的使用方法,this是C#程序設(shè)計(jì)中非常重要的一個(gè)關(guān)鍵字,本文以實(shí)例形式對(duì)此作出簡(jiǎn)單的用法分析,需要的朋友可以參考下
    2014-08-08
  • C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例

    C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例

    這篇文章主要介紹了C#中數(shù)組、ArrayList和List三者的區(qū)別詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • C#使用Spire.Doc for .NET將HTML轉(zhuǎn)換為圖像

    C#使用Spire.Doc for .NET將HTML轉(zhuǎn)換為圖像

    在C#開(kāi)發(fā)中,借助Spire.Doc for .NET庫(kù),開(kāi)發(fā)者可通過(guò)簡(jiǎn)潔代碼將HTML內(nèi)容高效轉(zhuǎn)換為多種圖像格式,下面小編就來(lái)和大家介紹一下具體實(shí)現(xiàn)方法吧
    2025-10-10
  • C#使用xsd文件驗(yàn)證XML格式是否正確的實(shí)現(xiàn)方法

    C#使用xsd文件驗(yàn)證XML格式是否正確的實(shí)現(xiàn)方法

    這篇文章主要介紹了C#使用xsd文件驗(yàn)證XML格式是否正確的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了C#針對(duì)xml文件的創(chuàng)建、驗(yàn)證相關(guān)操作技巧,需要的朋友可以參考下
    2017-01-01
  • C#簡(jiǎn)單配置類及數(shù)據(jù)綁定

    C#簡(jiǎn)單配置類及數(shù)據(jù)綁定

    這篇文章主要介紹了C#簡(jiǎn)單配置類及數(shù)據(jù)綁定,原理比較簡(jiǎn)單,適用于一些小型項(xiàng)目。主要實(shí)現(xiàn)保存配置到j(luò)son文件、從文件或?qū)嵗虞d配置類的屬性值、數(shù)據(jù)綁定到界面控件的功能,需要的朋友可以參考一下
    2021-11-11
  • C# List引用類型克隆的3種方法

    C# List引用類型克隆的3種方法

    這篇文章主要給大家介紹了關(guān)于C# List引用類型克隆的3種方法,包括反射、序列化(依賴Newtonsoft.Json) 以及序列化(BinaryFormatter)的實(shí)現(xiàn)方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧
    2019-01-01

最新評(píng)論

托里县| 方正县| 吉木乃县| 乌海市| 长汀县| 通海县| 眉山市| 名山县| 监利县| 宁津县| 兴宁市| 民乐县| 峨眉山市| 广汉市| 汤阴县| 五河县| 五台县| 台东市| 建阳市| 奈曼旗| 铜梁县| 濉溪县| 镇坪县| 太保市| 南康市| 白银市| 黄山市| 酉阳| 无棣县| 宽甸| 浙江省| 贺兰县| 辽宁省| 武汉市| 古浪县| 迁西县| 抚远县| 湖北省| 盐亭县| 三台县| 堆龙德庆县|