.net-去重的几种情况

文章目录

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


前言

.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 myList1group p by new { p.Id, p.Name, p.Age } into gselect 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/234340.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Three.js创建导航立方体

什么是导航立方体&#xff1f; 导航立方体是一个交互式的3D控件&#xff0c;它允许用户通过点击和拖动立方体的各个面来改变3D视图的方向。这是一种非常直观的方式&#xff0c;让用户能够轻松地在3D空间中导航。 创建导航立方体 下面是一个基本的步骤&#xff0c;说明如何使用…

BUUCTF [GXYCTF2019]BabySQli 1 详解!(MD5与SQL之间的碰撞)

题目环境burp抓包 随便输入值 repeater放包 在注释那里发现某种编码 MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5 看着像是base编码格式 通过测试发现是套加密&#xff08;二次加密&#xff09; 首先使用base32对此编码…

shell编程系列(7)-使用wc进行文本统计

文章目录 前言wc命令的使用wc命令的参数说明&#xff1a;统计字数统计行数打印文本行号 结语 前言 统计功能也是我们在shell编程中经常碰到的一个需求&#xff0c;wc命令可以适用于任何需要统计的数据&#xff0c;不只是统计文本&#xff0c;配合ls命令我们可以统计文件的个数…

4.livox hap(大疆激光雷达)环境搭建

本文是在rk3588设备的ubuntu20.04的系统环境下搭建livox hap的。大概的步骤分为&#xff1a; 一、gcc、g、cmake 的安装 二、ros安装&#xff08;上一章已介绍&#xff09; 三、Livox SDK2的编译 四、livox_ros_driver2的编译 五、hap的点云视频录制、点播点云视频bag、ba…

开启虾皮购物新旅程,快速注册买家号

想要在shopee上畅享丰富的购物体验吗&#xff1f;那就让我们一起迈出第一步&#xff0c;注册一个属于你自己的虾皮买家号吧&#xff01; 1. 访问虾皮平台 首先&#xff0c;打开你的浏览器&#xff0c;输入虾皮平台网址&#xff0c;点击注册或登录按钮。这将引导你进入注册界面…

基数排序及利用数组简化解题

红豆不堪看&#xff0c;满眼相思泪 本文主要是帮助大家熟练掌握利用数组进行有关判断的题目&#xff0c;看完本文后在之后的刷题中都可以利用这种思想&#xff0c;当然举例中的题目利用该种方法可能不是最优解&#xff0c;但绝对是你看到题目不用思考太多就可以做出来的方法&am…

实验8配置工具

一、实验目的 1. 掌握UML中建模工具——部署图&#xff0c;用于显示系统中软件和硬件的物理架构。 2. 掌握应用Visio等业界常用的建模工具的基本使用方法和基本绘图操作&#xff0c;选择一种并熟练使用&#xff0c;会使用该工具针对具体问题建立分析模型。 二、实验内容与步骤…

桥接设计模式

package com.jmj.pattern.bridge;/*** 视频文件(实现化角色)*/ public interface VideoFile {void decode(String fileName); }package com.jmj.pattern.bridge;public class RmvFile implements VideoFile{Overridepublic void decode(String fileName) {System.out.println(&…

米贸搜|如何用Facebook为eBay实现引流?

要利用Facebook为eBay实现引流&#xff0c;可以尝试以下方法&#xff1a; 创建专页或社群&#xff1a;在Facebook上创建一个专页或社群&#xff0c;专注于你在eBay上销售的产品或相关主题。确保专页或社群的名称和描述清楚地表明与eBay有关。 定期发布内容&#xff1a;在Face…

彻底解决A JNI error has occurred, please check your installation and try again

报错信息 A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher has been compiled by a more recent version of the Java…

Sourcepawn 脚本入门(一)准备

&#x1f34e;Sourcepawn 脚本入门(一)准备 1.Sourcepawn是什么? Sourcepawn是SourceMod团队开发的基于source-sdk的服务器插件开发的一种脚本语言。 SourceMod: Half-Life 2 Scripting 它适用于大部分起源引擎的游戏&#xff0c;多见于L4D&#xff0c;CSS,CSGO&#xff0c; …

C盘爆红 教你如何快速释放空间

目录 问题描述&#xff1a; C盘爆红 快速清理空间&#xff1a; 1.找到设置 2.选择系统 3.打开存储 4.进入清理建议 5.选择以前的Windows安装文件 6.点击清理 7.至此清理完成 问题描述&#xff1a; C盘爆红 快速清理空间&#xff1a; 1.找到设置 2.选择系统 3.打开存储 4.进入清…