文章目录

前言1. int 类型的list 去重2. string类型的 list 去重3. T泛型 List去重4. 使用HashSet List去重5. 创建静态扩展方法

总结

前言

.net 去重的几种情况

1. int 类型的list 去重

// List

List myList = new List(){ 100 , 200 ,100 ,300};

myList = myList.Distinct().ToList();

foreach (var item in myList)

{

Console.WriteLine(item); // 100 200 300

}

2. string类型的 list 去重

List myList = new List(){ "100" , "200" ,"300" ,"300"};

myList = myList.Distinct().ToList();

foreach (var item in myList)

{

Console.WriteLine(item);

}

3. T泛型 List去重

public class User

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set;}

}

List myList1= new List()

{

new User() { Id = 1, Name = "张三", Age = 11 } ,

new User() { Id = 1, Name = "张三", Age = 11} ,

new User() { Id = 3, Name = "李四", Age = 13 } ,

};

// groupBy 方式

myList1= myList1.GroupBy(p => p.Id).Select(q => q.First()).ToList();

foreach (var item in myList1)

{

Console.WriteLine("Id:" + item.Id + ", Name:" + item.Name + ", Age:" + item.Age);

}

// key 方式如下图

var myList2 = (from p in myList1

group p by new { p.Id, p.Name, p.Age } into g

select g).ToList();

foreach (var item in myList2 )

{

Console.WriteLine("Id:" + item.Key.Id + ", Name:" + item.Key.Name + ", Age:" + item.Key.Age);

}

4. 使用HashSet List去重

List list = new List { 1, 2, 2, 3, 4, 4, 5 };

HashSet set = new HashSet(list);

List distinctList = set.ToList();

5. 创建静态扩展方法

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace ConsoleApplication1

{

class Program

{

static void Main(string[] args)

{

var people = new List

{

new Person {Id=1,Name="Curry",Age=26 },

new Person {Id=1,Name="Curry",Age=26 },

new Person {Id=3,Name="James",Age=27 },

new Person {Id=4,Name="Kobe",Age=38 }

};

var distinctPeople = people.DistinctBy(x => x.Name).ToList();

distinctPeople.ForEach(x =>

Console.WriteLine($"Id:{x.Id},Name:{x.Name},Age:{x.Age}")

);

Console.ReadKey();

}

}

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

}

// 创建静态扩展方法

public static class DistinctHelper

{

public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector)

{

var identifiedKeys = new HashSet();

return source.Where(element => identifiedKeys.Add(keySelector(element)));

}

}

}

总结

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

参考: https://blog.csdn.net/laizhixue/article/details/89228355

相关阅读

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。