C# list<T>去重的實(shí)現(xiàn)
更新時(shí)間:2023年12月14日 09:15:01 作者:懶人咖
List集合在開發(fā)過程中很常見,經(jīng)常我們要對該集合進(jìn)行一系列操作,本文主要介紹了C# list<T>去重的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
值類型去重
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> /// 網(wǎng)控對象ID /// </summary> public string NetCtrlId { get; set; } /// <summary> /// 業(yè)務(wù)對象ID /// </summary> public string InterID { get; set; } /// <summary> /// 業(yè)務(wù)操作 /// </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();
集合里有三條記錄,其中兩條重復(fù)。
使用Distinct后,還有三條,說明distinct失敗
原因是,引用類型即使屬性一樣,引用地址是不一樣的。
只能用別的方式去避免。
到此這篇關(guān)于C# list<T>去重的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# list<T>去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)appSettings節(jié)點(diǎn)讀取與修改的方法
這篇文章主要介紹了C#實(shí)現(xiàn)appSettings節(jié)點(diǎn)讀取與修改的方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-10-10C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本
這篇文章主要介紹了C#實(shí)現(xiàn)判斷操作系統(tǒng)是否為Win8以上版本,本文講解了利用C#獲取OS的版本號、利用反射獲取當(dāng)前正在運(yùn)行的程序的版本信息、 利用C#判斷當(dāng)前操作系統(tǒng)是否為Win8系統(tǒng)等內(nèi)容,需要的朋友可以參考下2015-06-06C#中static void Main(string[] args) 參數(shù)示例詳解
這篇文章主要介紹了C#中static void Main(string[] args) 參數(shù)詳解,本文通過具體示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2017-03-03