分別使用過List中Distinct(),GroupBy()實現鏈表的去重。 1.先上效果: 一維鏈表中分別有元素“aa”,"bb",'aa','aa',"cc",使用Distinct()方法後輸出 aa,bb,cc 二維鏈表中類型為ClassA類型,其中對象的屬性A分別為1,1,2,3,1,使用G ...
分別使用過List中Distinct(),GroupBy()實現鏈表的去重。
1.先上效果:
一維鏈表中分別有元素“aa”,"bb",'aa','aa',"cc",使用Distinct()方法後輸出 aa,bb,cc
二維鏈表中類型為ClassA類型,其中對象的屬性A分別為1,1,2,3,1,使用GroupBy()方法實則是分類,輸出Key值分別為1,2,3。
2.上代碼,類ClassA
1 class ClassA 2 { 3 private int a; 4 public int A 5 { 6 get { return a; } 7 set { a = value; } 8 9 } 10 11 private string b; 12 public string B 13 { 14 get { return b; } 15 set { b = value; } 16 17 } 18 }
主函數,分別列印一維鏈表,二維鏈表去重後輸出的值。
1 static void Main(string[] args) 2 { 3 //1.一維鏈表去重覆(Distinct方法) 4 List<string> lst1 = new List<string>() { "aa", "bb", "cc", "aa", "bb" }; 5 List<string> lst1Distinct = lst1.Distinct().ToList(); 6 7 StringBuilder sb1 = new StringBuilder(); 8 sb1.Append("一維鏈表去重:"); 9 foreach (var item in lst1Distinct) 10 { 11 sb1.Append(item); 12 sb1.Append("-"); 13 } 14 Console.WriteLine(sb1.ToString());//結果為 aa-bb-cc- 15 16 //2.二維鏈表去重(GroupBy方法) 17 List<ClassA> lst2 = new List<ClassA>(); 18 lst2.Add(new ClassA() { A = 1, B = "aa" }); 19 lst2.Add(new ClassA() { A = 1, B = "bb" }); 20 lst2.Add(new ClassA() { A = 2, B = "aa" }); 21 lst2.Add(new ClassA() { A = 3, B = "aa" }); 22 lst2.Add(new ClassA() { A = 1, B = "cc" }); 23 var lst2Distinct = lst2.GroupBy(r => r.A);//根據屬性A分組 24 StringBuilder sb2 = new StringBuilder(); 25 sb2.Append("二維鏈表去重:"); 26 foreach (var item in lst2Distinct) 27 { 28 sb2.Append(item.Key.ToString()); 29 sb2.Append("-"); 30 } 31 Console.WriteLine(sb2.ToString());//結果為1-2-3- 32 Console.Read(); 33 }