日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

去除list集合中重复项的几种方法

發布時間:2023/11/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 去除list集合中重复项的几种方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為用到list,要去除重復數據,嘗試了幾種方法。記錄于此。。。

測試數據:

       List<string> li1 = new List<string> { "8", "8", "9", "9" ,"0","9"};List<string> li2 = new List<string> { "張三", "張三", "李四", "張三", "王五", "李四" };List<string> li3 = new List<string> { "A", "A", "C", "A", "C", "D" };List<string> li4 = new List<string> { "12", "18", "19", "19", "10", "19" };

方法一:

HashSet<string> hs = new HashSet<string>(li1); //此時已經去掉重復的數據保存在hashset中

方法二:

      for (int i = 0; i < li2.Count; i++) //外循環是循環的次數 {for (int j = li2.Count - 1 ; j > i; j--) //內循環是 外循環一次比較的次數 {if (li2[i] == li2[j]){li2.RemoveAt(j);}}}

方法三:

      //把相同的用null代替。for (int i = 0; i < li3.Count; i++){for (int j = 0; j < li3.Count; j++){if (i == j) continue;if (li3[i] == li3[j]){li3[j] = "null";}}}

方法四:

     //這方法跟上面的一樣,只是變了邏輯for (int i = 0; i < li4.Count - 1; i++){for (int j = 0; j < li4.Count ; j++){if (i != j){if (li4[i] == li4[j]){li4[j] = "null";}}}}

最后輸出看結果

       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去除重復后的值為");li4.ForEach(item => Console.WriteLine(item));

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

?

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

class Program{static void Main(string[] args){List<Model> modelList = new List<Model>() { new Model() { ID = 1, Title = "abcde" },new Model() { ID = 2, Title = "ABCDE" },new Model(){ ID = 3, Title = "AbcdE" },new Model() { ID = 4, Title = "A" }, new Model() { ID = 5, Title = "a" } };Console.Read();}}public class Model{public int ID { get; set; }public string Title { get; set; }}

解決方案一:這里比較的前提是對象的哈希代碼相等。否則不會比較,因為哈希代碼不相等。兩個對象顯然不相等

//定義一個類繼承IEqualityComparer接口public class ModelComparer : IEqualityComparer<Model>{public bool Equals(Model x, Model y){return x.Title.ToUpper() == y.Title.ToUpper();}public int GetHashCode(Model obj){return obj.Title.ToUpper().GetHashCode();}}

調用:

modelList = modelList.Distinct(new ModelComparer()).ToList();

解決方案二:

var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.FirstOrDefault().ID });modelList = modelList.Where(m => title.Select(mo => mo.ID).Contains(m.ID)).ToList(); foreach (var item in modelList){Console.WriteLine(item.ID + "\t" + item.Title);}

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

List<string> li1 = new List<string> { "8", "8", "9", "8", "0", "9" };li1 = li1.Distinct().ToList();

?

轉載于:https://www.cnblogs.com/shuilangyizu/p/7105490.html

總結

以上是生活随笔為你收集整理的去除list集合中重复项的几种方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。