LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#中去重的高级方法,你了解几个?

admin
2023年10月10日 10:30 本文热度 444

今天我们一起来讨论一下关于C#数据去重的常见的几种方式,每种方法都有其特点和适用场景,我们根据具体需求选择最合适的方式。当然欢迎你在评论区留下你觉得更好的数据去重的方式。以下是一些常见的方法:

1、使用DISTINCT关键字:

在SQL查询中,可以使用DISTINCT关键字来删除重复的行。在C#中,可以使用LINQ和SqlCommand对象来执行类似的查询。例如:

string connString = "Your Connection String";

using (SqlConnection conn = new SqlConnection(connString)){

    conn.Open();

    string sql = "select DISTINCT column1, column2 from your_table";

    using (SqlCommand cmd = new SqlCommand(sql, conn))

    {

        using (SqlDataReader reader = cmd.executeReader())

        {

            while (reader.Read())

            {

                // 处理结果

            }

        }

    }

}

2、使用HashSet:

HashSet是一个不包含重复元素的集合。可以使用它来快速查找和删除重复项。例如:

List<int> numbers = new List<int> { 1, 2, 3, 4, 4, 5, 5, 6 };

HashSet<int> uniqueNumbers = new HashSet<int>(numbers);

List<int> result = new List<int>(uniqueNumbers);

在这个例子中,result列表只包含不重复的数字。

3、使用LINQ:

LINQ是C#中强大的查询语法,可以用于过滤、排序和组合数据集。使用LINQ,可以非常容易地删除重复项。例如:

List<int> numbers = new List<int> { 1, 2, 3, 4, 4, 5, 5, 6 };

var uniqueNumbers = numbers.Distinct().ToList();

这个例子使用LINQ的Distinct方法来删除重复的数字。

4、使用Linq的GroupBy()方法去重

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

/// <summary>

/// 使用LinqGroupBy()方法去重

/// </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));

}

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

    public class ArrayDeduplication

    {

        /// <summary>

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

        /// </summary>

        public static void CustomEqualityComparerDuplicate(){

            var dataSource = new List<int>() { 1232588999910088305015100999923 };

            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();

        }

    }


6、直接循环遍历去重

/// <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));

}


该文章在 2023/10/10 10:30:21 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved