C#数据去重的五种方式,你知道几种?
2024-04-24 17:34:26 软件 140观看
摘要今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。使用HashSet去重C# 中的 HashSet 是一种集合类型,它确保其中的元素是唯一的,不允许重复值的存在。当

今天我们一起来讨论一下关于C#数据去重的的5种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。MVL28资讯网——每日最新资讯28at.com

MVL28资讯网——每日最新资讯28at.com

使用HashSet去重

C# 中的 HashSet 是一种集合类型,它确保其中的元素是唯一的,不允许重复值的存在。当你尝试向 HashSet 中添加一个重复的元素时,HashSet 会忽略重复的值,而不会引发错误。这使得 HashSet 成为一个非常方便的数据结构,用于存储一组唯一的元素,并且在需要时可以高效地进行查找、插入和删除操作,注意HashSet中的元素是无序的。MVL28资讯网——每日最新资讯28at.com

        /// <summary>        /// 使用HashSet去重        /// TODO:HashSet是一个集合类,它的特点是不允许重复元素,可以方便地实现去重功能。        /// </summary>        public static void HashSetDuplicate()        {            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };            HashSet<int> uniqueData = new HashSet<int>(dataSource);            Console.WriteLine(string.Join(", ", uniqueData));        }

使用Linq的Distinct()方法去重

Linq中的Distinct()方法用于从集合中筛选出不重复的元素。Distinct()方法基于元素的相等性来进行筛选,并返回一个包含不重复元素的新序列。底层实现还是使用到了HashSet。MVL28资讯网——每日最新资讯28at.com


MVL28资讯网——每日最新资讯28at.com

MVL28资讯网——每日最新资讯28at.com

        /// <summary>        /// 使用Linq的Distinct()方法去重        /// </summary>        public static void DistinctDuplicate()        {            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };            var uniqueData = dataSource.Distinct();            Console.WriteLine(string.Join(", ", uniqueData));        }

使用Linq的GroupBy()方法去重

GroupBy()方法将原始集合中的元素进行分组,根据指定的键或条件进行分组。每个分组都会有一个唯一的键,通过将原始集合分组并选择每个分组中的第一个元素,实现了去重的效果。MVL28资讯网——每日最新资讯28at.com

MVL28资讯网——每日最新资讯28at.com

       /// <summary>        /// 使用Linq的GroupBy()方法去重        /// </summary>        public static void GroupByDuplicate()        {            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };            //GroupBy()方法将原始集合中的元素进行分组,根据指定的键或条件进行分组。每个分组都会有一个唯一的键,通过将原始集合分组并选择每个分组中的第一个元素,实现了去重的效果。            var uniqueData = dataSource.GroupBy(item => item).Select(group => group.First()).ToList();            Console.WriteLine(string.Join(", ", uniqueData));        }

使用自定义的比较器和循环遍历

    public class ArrayDeduplication    {        /// <summary>        /// 使用自定义的比较器和循环遍历        /// </summary>        public static void CustomEqualityComparerDuplicate()        {            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };            var uniqueData = new List<int>();            foreach (var item in dataSource)            {                if (!uniqueData.Contains(item, new CustomEqualityComparer()))                {                    uniqueData.Add(item);                }            }            Console.WriteLine(string.Join(", ", uniqueData));        }    }            /// <summary>    /// 自定义的比较器    /// </summary>    public class CustomEqualityComparer : IEqualityComparer<int>    {        public bool Equals(int x, int y)        {            return x == y;        }        public int GetHashCode(int obj)        {            return obj.GetHashCode();        }    }

直接循环遍历去重

        /// <summary>        /// 直接循环遍历去重        /// </summary>        public static void LoopTraversalDuplicate()        {            var dataSource = new List<int>() { 1, 2, 3, 2, 5, 88, 99, 99, 100, 88, 30, 50, 15, 100, 99, 99, 2, 3 };            var uniqueData = new List<int>();            foreach (var item in dataSource)            {                //if (!uniqueData.Any(x => x == item))                //if (!uniqueData.Exists(x => x == item))                if (!uniqueData.Contains(item))                {                    uniqueData.Add(item);                }            }            Console.WriteLine(string.Join(", ", uniqueData));        }

示例源码:https://github.com/YSGStudyHards/DotNetGuide/blob/main/DotNetGuidePractice/HelloDotNetGuide/%E6%95%B0%E7%BB%84%E7%9B%B8%E5%85%B3/ArrayDeduplication.csMVL28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-85229-0.htmlC#数据去重的五种方式,你知道几种?

声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。

显示全文

上一篇:呀,Python中居然还有字典推导式

下一篇:React 18的并发渲染:颠覆传统的性能飞跃

最新热点