学习笔记----C#List集合去交集,并集,差集,使用HashSet去重

总是遇见 插入集合数据时 修改时会出现新增部分,想要删除部分的情况

  • 
        /// <summary>
        /// 学生信息
        /// </summary>
        public class Students
        {
            /// <summary>
            /// Id
            /// </summary>
            public long Id { get; set; }
            /// <summary>
            /// 姓名
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// 年龄
            /// </summary>
            public int Age { get; set; }
    
            /// <summary>
            /// 性别
            /// </summary>
            public bool Gender { get; set; }
        }
    
    
数据
  • var stuList1 =new List<Students>();
    for(var i=0;i<10;i++)
    {
        stuList1.add(new Students(){
            Id=i,
            Name=$"张{i}",
            Age =10+i,
            Gender = i%2==0?true:false
        })
    }
    
    var stuList2 =new List<Students>();
    for(var i=5;i<15;i++)
    {
        stuList2.add(new Students(){
            Id=i,
            Name=$"张{i}",
            Age =10+i,
            Gender = i%2==0?true:false
        })
    }
    
    //想要新增数据差集
    var addPermList = stuList1.Where(x => !stuList2.Any(e => e.Id == x.Id && e.Gender == x.Gender )).ToList();
    Id=[10,11,12,13,14]
                                     
                                     
                        
    //想要删除的数据差集
    var deletePermList = stuList2.Where(x => !stuList1.Any(e => e.Id == x.Id && e.Gender == x.Gender)).ToList();
    Id=[0,1,2,3,4]
    

标题使用HashSet去重 HashSet介绍传送门

var stuList3 =new List<Students>();
for(var i=5;i<15;i++)
{
    stuList3.add(new Students(){
        Id=2,
        Name=$"张",
        Age =10,
        Gender = i%2==0?true:false
    })
}
var stuList4 =new List<Students>();
HashSet<Students> set =new HashSet<Students>(stuList3);
stuList4.AddRange(set);

foreach (var item in stuList4)
{
	Console.WriteLine(item .ToJsonString());
}
  • 控制台打印
{
	Id:"2",
    Name:"张",
    Age :"10",
    Gender:true
}

{
	Id:"2",
    Name:"张",
    Age :"10",
    Gender:false
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值