.net-去重的几种情况

简介: .net-去重的几种情况

@TOC


前言

.net 去重的几种情况


1. int 类型的list 去重

//  List<int> 
  List<int> myList = new List<int>(){
   
    100 , 200 ,100 ,300};
        myList  = myList.Distinct().ToList();
        foreach (var item in myList)
        {
   
   
            Console.WriteLine(item); // 100 200 300
        }

2. string类型的 list 去重

 List<string> myList = new List<string>(){
   
    "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<User> myList1= new List<User>() 
 {
   
    
    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<int> list = new List<int> {
   
    1, 2, 2, 3, 4, 4, 5 };
        HashSet<int> set = new HashSet<int>(list);
        List<int> 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<Person>
            {
   
   
                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<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
        {
   
   
            var identifiedKeys = new HashSet<TKey>();
            return source.Where(element => identifiedKeys.Add(keySelector(element)));
        }
    }
}

总结

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

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

相关文章
|
开发框架 .NET
.net 字符串逗号隔开去重
.net 字符串逗号隔开去重
49 0
.net 字符串逗号隔开去重
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
41 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
58 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
48 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
3月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
126 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
191 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
79 0
|
6月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
339 5
|
6月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界