码迷,mamicode.com
首页 > Windows程序 > 详细

C# List去重

时间:2020-01-09 18:36:26      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:继承   eth   自己的   扩展   compare   font   equal   输出   类继承   

简单例子-代码编写:

List<Company> companys = new List<Company>();//公司实体Company,字段-公司名称,公司地址,电话
companys.Add(new Company("龙龙股份有限公司", "固戍北辰路666号"));
companys.Add(new Company("龙龙股份有限公司", "固戍放飞路三号"));//最后结果,重复项,此条数据删除
companys.Add(new Company("军军股份有限公司", "固戍路甲八号"));

#region 方式一
//方式一:Lambda表达式去重
List<Company> companyList1 = companys.Where((x, i) => companys.FindIndex(z => z.CompanyName == x.CompanyName) == i).ToList();
#endregion

#region 方式二
//方式二:List中的元素实现IEquatabe接口,并提供Equals方法和GetHashCode方法。
List<Company> companyList2 = companys.Distinct().ToList();
#endregion

#region 方式三
//方式三:通过循环方式去重
List<Company> companyList3 = new List<Company>();
foreach (Company company in companys)
{
if (companyList3.Exists(x => x.name == company.name) == false)
{
companyList3.Add(company);
}
}
#endregion

输出结果都是一样的,第二条重复数据没有了。

方法二中Distinct 扩展:

1.Distinct方法不加参数的话,去重的规则是比较对象集合中对象的引用是否相同,如果相同,则去重,否则不去重。

2.Distinct方法加参数的话,我们需建一个类继承IEqualityComparer接口必须实现Equals和GetHashCode方法,然后在类里面根据自己的需求条件来写相关的判断

C# List去重

标签:继承   eth   自己的   扩展   compare   font   equal   输出   类继承   

原文地址:https://www.cnblogs.com/yueyongsheng/p/12172835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!