前言
list集合操作去除重複資料的這種情況經常會碰到,裡面也有很多大神們做過,在這裡主要是借鑑然後自己整理了一下,主要是為了方便自己,以後再次碰到這種去重問題,直接開啟自己的鏈結拿起鍵盤就是幹,,,,
一、方法一
利用hashset去重,在實體類裡重寫equals和gethashcode方法
class二、方法二利用拉姆達表示式distinct方法,我們轉到定義可以看到兩個過載的distinct方法,如圖program
,new userinfo()
};//因為我們通常操作的是list集合,所以我在這裡把list轉成了hashset型別來接受
hashseths = new hashset(list);
foreach (var item in
hs) username:");
}console.readkey();
}class
userinfo
public
string username
public
override
bool equals(object
obj)
public
override
intgethashcode()}}
我們再轉到定義看看iequalitycomparer介面裡面到底是個啥玩意,原來有兩個方法
這時候我們來實現iequalitycomparer介面裡面的方法
class我們再來寫乙個通用的擴充套件方法program
,new userinfo()
};list.distinct(
new distinctcompare()).tolist().foreach(item => username:");
});console.readkey();
}class
userinfo
public
string username
}class distinctcompare : iequalitycomparer
public
intgethashcode(userinfo obj)}}
幫助類
public實現static
class
distincthelper
}public
class compare: iequalitycomparer
public
bool
equals(t x, t y)
public
intgethashcode(t obj)
}
class三、方法三利用拉姆達表示式一句話即可program
,new userinfo()
};list.distinctex(x => x.id).tolist().foreach(item => username:");
});console.readkey();
}class
userinfo
public
string username }}
class權責申明本文版權歸作者和共有,歡迎**,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。如果覺得還有幫助的話,可以點一下右下角的【推薦】,希望能夠持續的為大家帶來好的技術文章!想跟我一起進步麼?那就【關注】我吧。program
,new userinfo()
};//用拉姆達表示式一句話即可實現去重
var result = list.where((x,i)=>list.findindex(y=>y.id==x.id)==i);
result.tolist().foreach(item=> username:");
});console.readkey();
}class
userinfo
public
string username }}
三重積分先二後一和先一后二的碎碎念
提到三重積分,伴隨著的常常是這兩種積分的策略。你看因為是三重,所以可以拆分成不均勻的兩部分,二重積分裡怎麼拆都是先一后一對吧 本篇文章的起因是我自以為這兩個概念分的蠻清晰了,但是今天卻把先一后二與截面法聯絡在一起了,嚇得我趕緊複習這部分的知識點,溫故知新。還想再從巨集觀的角度,總結一次積分到三重積分...
對List中物件的去重
今天專案中遇到了乙個對list中物件去重的問題。首先對於我們自己系統中的物件我們只要重寫該物件的 equal 和 hashcode 即可 利用物件中的能夠唯一確定物件的屬性 但是我遇到的不是本系統的物件,而是另乙個系統中的物件,我本身是無法對其進行重寫的。我的處理方法是遍歷list,利用map un...
如何對list集合物件去重
我們知道,list集合是乙個元素有序,可重複的集合,集合中每個元素都有對應的順序索引,我們通過索引進行取值賦值 那麼,當list集合中的元素為多個屬性組成的物件時,如何對list集合進行去重 因為物件是在記憶體中開闢一塊區域進行儲存,每個物件的值哪怕相同,但只要是你新new出來的,代表的也是不同的物...