C#---distinct

本文介绍了一个使用C#实现列表元素去重的方法。通过LINQ查询语法,该示例代码展示了如何从包含重复整数的列表中移除重复项,并输出最终的唯一元素。
        static void Main(string[] args)
        {
            List<int> lst = new List<int>();

            lst.Add(1);
            lst.Add(1);
            lst.Add(2);
            lst.Add(2);

            lst = lst.Distinct().ToList();

            for(int i=0; i<lst.Count; i++)
                Console.WriteLine(lst[i]);

            Console.ReadLine();
        }

这里写图片描述

C#中,Distinct用于从集合中去除重复的元素。它可以根据元素的相等性进行比较来判断是否重复。你可以使用Distinct方法来删除重复的元素,并返回一个新的集合。在C#中,有多种方法可以实现去重的操作。 一种常见的方法是使用Distinct方法结合自定义的相等性比较器来进行去重。你可以创建一个实现了IEqualityComparer接口的自定义比较器类,并将其作为参数传递给Distinct方法。在这个自定义比较器中,你可以定义用于比较元素相等性的逻辑。然后,通过foreach循环逐个读取过滤后的元素。例如,在一个Student类的集合中去除重复的元素,你可以使用Distinct方法并传递一个自定义的StudentEqualityComparer比较器来实现去重。代码示例如下: ``` var stuList = studentList.Distinct(new StudentEqualityComparer()); foreach(var stu in stuList){ Console.WriteLine(stu.Name); } ``` 另一种方法是使用GroupBy和FirstOrDefault方法来进行去重。你可以根据需要的属性进行分组,然后选择每组的第一个元素,从而实现去重的效果。代码示例如下: ``` var list1 = list.GroupBy(d => new { d.Age, d.Name }) .Select(d => d.FirstOrDefault()) .ToList(); ``` 还有一种方法是使用HashSet来进行去重。你可以创建一个HashSet对象,并使用扩展方法Distinct来筛选不重复的元素。代码示例如下: ``` public static IEnumerable<TSource> Distinct<TSource, TKey>( this IEnumerable<TSource> source, Func<TSource, TKey> keySelector) { var hashSet = new HashSet<TKey>(); foreach (TSource element in source) { if (hashSet.Add(keySelector(element))) { yield return element; } } } ``` 最后,你还可以使用Distinct方法并传递一个比较器来指定属性进行比较来实现去重。例如,你可以使用lambda表达式来定义比较的逻辑,并使用Distinct方法进行去重。代码示例如下: ``` list = list.Distinct((a,b) => a.Age == b.Age && a.Name == b.Name).ToList(); ``` 以上是在C#中进行去重操作的几种常见方法,你可以根据实际需求选择合适的方法来进行去重。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值