zoukankan      html  css  js  c++  java
  • C# List集合基础操作

    这里介绍一下C# list的基础操作: 去重、差集、并集、交集

    下面,我们看看例子。我们创建了一个User实体,包含两个list,User实体如果Id相等,则相等。

    users1是id 1到4的集合,users2是id 4到8的集合。

                List<User> users1 = new List<User>();
                users1.Add(new User() {Id = 1, Age = 1, Name = "Name01"});
                users1.Add(new User() { Id = 2, Age = 2, Name = "Name02" });
                users1.Add(new User() { Id = 3, Age = 3, Name = "Name03" });
                users1.Add(new User() { Id = 4, Age = 4, Name = "Name04" });
    
                List<User> users2 = new List<User>();
                users2.Add(new User() { Id = 4, Age = 44, Name = "Name044" });
                users2.Add(new User() { Id = 5, Age = 55, Name = "Name01" });
                users2.Add(new User() { Id = 6, Age = 66, Name = "Name06" });
                users2.Add(new User() { Id = 7, Age = 77, Name = "Name07" });
                users2.Add(new User() { Id = 8, Age = 88, Name = "Name08" });
    
                //把两个list合并在一起
                var result1 = new List<User>();
                result1.AddRange(users1);
                result1.AddRange(users2);
    
                //去重:在result1中去重
                var result2 = result1.Distinct().ToList();
    
                //差集:users1在users2之中的差集
                var result3 = users1.Except(users2).ToList();
    
                //并集:users1与users2 合起来不重复的元素
                var result4 = users1.Union(users2).ToList();
    
                //交集:users1与users2 相同的元素
                var result5 = users1.Intersect(users2).ToList();

    下面我们看看User实体的定义:

    需要注意的是,我们重写了User的GetHashCode与Equals方法来比较对象是否相等。

        public class User
        {
            public long Id { get; set; }
    
            public string Name { get; set; }
    
            public int Age { get; set; }
    
            public override bool Equals(object obj)
            {
                if (obj == null || GetType() != obj.GetType())
                {
                    return false;
                }
                User u = (User) obj;
                if (this.Id != 0 && u.Id == this.Id)
                    return true;
                return false;
                
            }
    
            public override int GetHashCode()
            {
                return this.Id.GetHashCode();
            }
    
            public override string ToString()
            {
                return string.Format("id=" + this.Id);
            }
        }


    可以关注本人的公众号,多年经验的原创文章共享给大家。

    
    

     
  • 相关阅读:
    Sql Server 日期推算处理,格式化处理
    自动升级功能(zt)
    绘制普通的可上下左右布局的RULER(zt)
    合并两个WORD文档,并且修改Word中标签的内容
    Sql Server 中汉字处理排序规则,全角半角
    用函数式编程技术编写优美的 JavaScript(zt)
    什么是序列化?
    日期概念理解中的一些测试
    DataSet,DataTable 不使用EXCEL组件直接保存为EXCEL
    接口测试自动化实践指南
  • 原文地址:https://www.cnblogs.com/alunchen/p/6829460.html
Copyright © 2011-2022 走看看