找回密码
 加入我们
关闭

CSDN热搜

草根吧
首页 官方推荐社区 移动开发 .net-去重的几种环境

gradle .net-去重的几种情况

IP:广东省广州市
TE-茶叶蛋 2023-12-3 10:56:52来自手机

前言

.net 去重的几种情况

1. int 典范的list 去重

  1. //  List<int>
  2.   List<int> myList = new List<int>(){ 100 , 200 ,100 ,300};
  3.         myList  = myList.Distinct().ToList();
  4.         foreach (var item in myList)
  5.         {
  6.             Console.WriteLine(item); // 100 200 300
  7.         }
复制代码
2. string典范的 list 去重

  1. List<string> myList = new List<string>(){ "100" , "200" ,"300" ,"300"};
  2.         myList  = myList.Distinct().ToList();
  3.         foreach (var item in myList)
  4.         {
  5.             Console.WriteLine(item);
  6.         }
复制代码
3. T泛型 List去重

  1. public class User
  2. {
  3.    public int Id { get; set; }
  4.    public string Name { get; set; }
  5.    public int Age { get; set;}
  6. }
  7. List<User> myList1= new List<User>()
  8. {
  9.     new User() { Id = 1, Name = "张三", Age = 11 } ,
  10.     new User() { Id = 1, Name = "张三", Age = 11} ,
  11.     new User() { Id = 3, Name = "李四", Age = 13 } ,
  12. };
  13. // groupBy 方式
  14. myList1= myList1.GroupBy(p => p.Id).Select(q => q.First()).ToList();
  15. foreach (var item in myList1)
  16. {
  17.    Console.WriteLine("Id:" + item.Id + ", Name:" + item.Name + ", Age:" + item.Age);
  18. }
  19. //  key 方式以下图
  20. var myList2 = (from p in myList1
  21.               group p by new { p.Id, p.Name, p.Age } into g
  22.               select g).ToList();
  23. foreach (var item in myList2 )
  24. {
  25.     Console.WriteLine("Id:" + item.Key.Id + ", Name:" + item.Key.Name + ", Age:" + item.Key.Age);
  26. }
复制代码

4. 操纵HashSet List去重

  1. List<int> list = new List<int> { 1, 2, 2, 3, 4, 4, 5 };
  2.         HashSet<int> set = new HashSet<int>(list);
  3.         List<int> distinctList = set.ToList();
复制代码

5. 建立静态扩大方式

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. namespace ConsoleApplication1
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             var people = new List<Person>
  13.             {
  14.                 new Person {Id=1,Name="Curry",Age=26 },
  15.                 new Person {Id=1,Name="Curry",Age=26 },
  16.                 new Person {Id=3,Name="James",Age=27 },
  17.                 new Person {Id=4,Name="Kobe",Age=38 }
  18.             };
  19.             var distinctPeople = people.DistinctBy(x => x.Name).ToList();
  20.             distinctPeople.ForEach(x =>
  21.             Console.WriteLine($"Id:{x.Id},Name:{x.Name},Age:{x.Age}")
  22.             );
  23.             Console.ReadKey();
  24.         }
  25.     }
  26.     public class Person
  27.     {
  28.         public int Id { get; set; }
  29.         public string Name { get; set; }
  30.         public int Age { get; set; }
  31.     }
  32.     // 建立静态扩大方式
  33.     public static class DistinctHelper
  34.     {
  35.         public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
  36.         {
  37.             var identifiedKeys = new HashSet<TKey>();
  38.             return source.Where(element => identifiedKeys.Add(keySelector(element)));
  39.         }
  40.     }
  41. }
复制代码
总结

本文探讨了在.net 几种常用典范数组的去重方式,关键用到 Distinct(),GroupBy(), HashSet。


免责声明:本文章来自网友分享,假如加害了您的权益,请联系我们,我们会实时删除侵权内容,感谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入我们

x

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们