去除list集合中重複項的幾種方法

2022-08-01 10:42:09 字數 2080 閱讀 7942

因為用到list,要去除重複資料,嘗試了幾種方法。記錄於此。。。

測試資料:

listli1 = new list;

listli2 = new list;

listli3 = new list;

listli4 = new list;

方法一:

hashseths = new hashset(li1); //此時已經去掉重複的資料儲存在hashset中
方法二:

for (int i = 0; i < li2.count; i++)  //外迴圈是迴圈的次數}}

方法三:

//把相同的用null代替。

for (int i = 0; i < li3.count; i++)}}

方法四:

//這方法跟上面的一樣,只是變了邏輯

for (int i = 0; i < li4.count - 1; i++)}}

}

最後輸出看結果

console.writeline("li1去除重複後的值為");

hs.tolist().foreach(item => console.writeline(item));

console.writeline("li2去除重複後的值為");

li2.foreach(item => console.writeline(item));

console.writeline("li3去除重複後的值為");

li3.foreach(item => console.writeline(item));

console.writeline("li4去除重複後的值為");

null我沒去掉。用的時候去掉即可。

當然。還有許多辦法。比如linq  distinct  等等都可以,看看網上的這個例子:去掉modellist中title重複的內容,不區分大小寫

class program

,new model() ,

new model(),

new model() ,

new model()

};console.read();}}

public class model

public string title

}

解決方案一:這裡比較的前提是物件的雜湊**相等。否則不會比較,因為雜湊**不相等。兩個物件顯然不相等

//定義乙個類繼承iequalitycomparer介面

public class modelcomparer : iequalitycomparer

public int gethashcode(model obj)

}

呼叫:

modellist = modellist.distinct(new modelcomparer()).tolist();
解決方案二:

var title = modellist.groupby(m => m.title.tolower().trim()).select(m => new );

modellist = modellist.where(m => title.select(mo => mo.id).contains(m.id)).tolist();

foreach (var item in modellist)

當然。如果你僅僅比較兩個值是否相等。

listli1 = new list;

li1 = li1.distinct().tolist();

去除list集合中重複項的幾種方法

因為用到list,要去除重複資料,嘗試了幾種方法。記錄於此。測試資料 listli1 new list list li2 new list list li3 new list list li4 new list 方法一 hashseths new hashset li1 此時已經去掉重複的資料儲存在...

Linq 和 list集合 去除重複項

方法一 iqueryablelistnotice from news in base.cabindata.newscontents where news.flag 1 select news distinct 此種去除方法弊端 只要物件中有重複的字段都會去除,會比對物件中所有的字段。方法二 把lin...

去除List集合中的重複值

最近專案中需要對list集合中的重複值進行處理,大部分是採用兩種方法,一種是用遍歷list集合判斷後賦給另乙個list集合,一種是用賦給set集合再返回給list集合。但是賦給set集合後,由於set集合是無序的,原先的順序就打亂了。所以我又想著能不能用set的特性進行去重又不打亂順序呢?試了一下,...