C# list<T>去重的實(shí)現(xiàn)
值類型去重
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)控對(duì)象ID
/// </summary>
public string NetCtrlId { get; set; }
/// <summary>
/// 業(yè)務(wù)對(duì)象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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#查找素?cái)?shù)實(shí)現(xiàn)方法
這篇文章主要介紹了C#查找素?cái)?shù)實(shí)現(xiàn)方法,程序中有很多使用的功能模塊,非常適合C#初學(xué)者學(xué)習(xí)借鑒,需要的朋友可以參考下2014-08-08
C#按路徑流式遍歷XML節(jié)點(diǎn)的實(shí)用方法
在處理大型 XML 文檔時(shí),傳統(tǒng)的 XDocument.Load 會(huì)一次性將整個(gè)文檔加載到內(nèi)存中,對(duì)于大文件非常消耗資源,本文將分享一個(gè)按路徑流式遍歷 XML 節(jié)點(diǎn)的實(shí)用方法,支持深層嵌套路徑,并保持流式解析,需要的朋友可以參考下2025-10-10
C#基礎(chǔ)知識(shí)系列八const和readonly關(guān)鍵字詳細(xì)介紹
這篇文章主要介紹了C#中的const和readonly關(guān)鍵字,有需要的朋友可以參考一下2014-01-01
WPF實(shí)現(xiàn)動(dòng)畫效果(三)之時(shí)間線(TimeLine)
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫效果之時(shí)間線(TimeLine),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C#中單問號(hào)(?)和雙問號(hào)(??)的用法整理
本文詳細(xì)講解了C#中單問號(hào)(?)和雙問號(hào)(??)的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05
.NET WinForm實(shí)現(xiàn)在listview中添加progressbar的方法
這篇文章主要介紹了.NET WinForm實(shí)現(xiàn)在listview中添加progressbar的方法,結(jié)合實(shí)例形式簡單分析了進(jìn)度條控件的添加與使用方法,需要的朋友可以參考下2017-05-05
C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則
這篇文章介紹了C#實(shí)現(xiàn)六大設(shè)計(jì)原則之依賴倒置原則的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

