C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# list<T>去重

C# list<T>去重的实现

作者:懒人咖

List集合在开发过程中很常见,经常我们要对该集合进行一系列操作,本文主要介绍了C# list<T>去重的实现,具有一定的参考价值,感兴趣的可以了解一下

值类型去重

List<object>

object is int

//object is int
   List<object> ointList = new List<object>();
   ointList.Add(1);
   ointList.Add(1);
   ointList.Add(2);
   ointList = ointList.Distinct().ToList();

在这里插入图片描述

object is decimal

//object is decimal
            List<object> odecimalList = new List<object>();
            odecimalList.Add(1.25);
            odecimalList.Add(1.25);
            odecimalList.Add(2.25);
            odecimalList = odecimalList.Distinct().ToList();

在这里插入图片描述

object is char

            //object is char
            List<object> ocharList = new List<object>();
            ocharList.Add('a');
            ocharList.Add('a');
            ocharList.Add('b');
            ocharList = ocharList.Distinct().ToList();

在这里插入图片描述

object is bool

            //object is bool
            List<object> oboolList = new List<object>();
            oboolList.Add(true);
            oboolList.Add(false);
            oboolList.Add(true);
            oboolList = oboolList.Distinct().ToList();

在这里插入图片描述

object is string

            //object is string
            List<object> osList = new List<object>();
            osList.Add("1");
            osList.Add("1");
            osList.Add("2");
            osList = osList.Distinct().ToList();

在这里插入图片描述

List<int>

            List<int> intList = new List<int>();
            intList.Add(1111);
            intList.Add(1111);
            intList.Add(2222);
            intList = intList.Distinct().ToList();

在这里插入图片描述

List<string>

            List<string> idList = new List<string>();
            idList.Add("1111");
            idList.Add("1111");
            idList.Add("2222");  
            idList = idList.Distinct().ToList();

在这里插入图片描述

引用类型去重

private class NetworkCtrl
        {

            #region <属性>

            /// <summary>
            /// 网控对象ID
            /// </summary>
            public string NetCtrlId { get; set; }

            /// <summary>
            /// 业务对象ID
            /// </summary>
            public string InterID { get; set; }

            /// <summary>
            /// 业务操作
            /// </summary>
            public string OperationDesc { get; set; }
            #endregion <属性>

        }
List<NetworkCtrl> ncList = new List<NetworkCtrl>();
            ncList.Add(new NetworkCtrl
            {
                InterID = "100148",
                NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
                OperationDesc = "售后单-SH231103001-下推其它出库单"
            });
            ncList.Add(new NetworkCtrl
            {
                InterID = "100149",
                NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
                OperationDesc = "售后单-SH231103002-下推其它出库单"
            });
            ncList.Add(new NetworkCtrl
            {
                InterID = "100148",
                NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
                OperationDesc = "售后单-SH231103001-下推其它出库单"
            });
            var ncList1 = ncList.Distinct().ToList();
            var ncList2 = ncList.GroupBy(x => x.InterID).Select(y => y.First()).ToList();

集合里有三条记录,其中两条重复。

在这里插入图片描述

使用Distinct后,还有三条,说明distinct失败

在这里插入图片描述

原因是,引用类型即使属性一样,引用地址是不一样的。
只能用别的方式去避免。

在这里插入图片描述

到此这篇关于C# list<T>去重的实现的文章就介绍到这了,更多相关C# list<T>去重内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文