最近在做项目的时候,发现有些需求需要特别的方式来实现。下面看代码

              private List<string> firstType = new List<string>();  
              private List<string> secondeType = new List<string>(); 
             private Dictionary<string, List<string>> typeKeyValue = new Dictionary<string, List<string>>();  // 一个键对应一个的得集合
             array = JArray.Parse(jsonType);
                for (int i = 0; i < array.Count; i++)
                {
                    //type.Add(item.ToString());
                    string firstTypeStr = array[i].ToString().Split(',')[0]; 
                    if (!firstType.Contains(firstTypeStr))  //剔除重复数据
                    {
                        firstType.Add(firstTypeStr);
                    }
                }
                foreach (var item in firstType)
                {
                    secondeType = new List<string>(); //中分类
                    foreach (var type in array)
                    {
                        if (item == type.ToString().Split(',')[0])
                        {
                            secondeType.Add(type.ToString().Split(',')[1]);
                        }
                    }
                    typeKeyValue.Add(item, secondeType);
                }

 下面是去除现有集合中重复数据的方法

            List<User> users = new List<User>();
            users.Add(new User("张三","北京东路"));
            users.Add(new User("李四","高新大道"));
            users.Add(new User("王五", "中山街"));
            users.Add(new User("张三", "北京东路"));
            users.Add(new User("李四", "高新大道"));
            users.Add(new User("王五", "中山大道"));

            //Distinct去出集合中的重复数据
           List<User> usersList1 = users.Distinct<User>().ToList();

            //Lambda表达式去重
           List<User> userList2 = users.Where((x,y)=>users.FindIndex(z=>z.Name==x.Name)==y).ToList(); 

            //通过循环的方式去重
            List<User> userList3 = new List<User>();
            foreach (var item in users)
            {
                if (userList3.Exists(z=>z.Name==item.Name)==false)
                {
                    userList3.Add(item);
                }
            }

            foreach (List<User> item in new object[] { usersList1,userList2,userList3})
            {
                Console.Write("UserList:\r\n");
                foreach (var user in item)
                {
                    Console.WriteLine(user.ToString());
                }
            }
            Console.ReadKey();
        }
 class User : IEquatable<User>
    {
        public string Name { set; get; }
        private string Address { get; set; }
        public User(string name,string address)
        {
            this.Name = name;
            this.Address = address;
        }
        public override string ToString()
        {
            return string.Format("name:{0},\taddress{1}", Name, Address);
        }
        public bool Equals(User other)
        {
            return this.Name==other.Name;
        }
        public override int GetHashCode()
        {
            return Name.GetHashCode();
        }
    }

在User类中,Equals函数中比较的参数,就是你要通过比较那个参数来去除重复的数据

在上面的示例中如果Name的值相同,Address的值不同,打印出来的是三个数据

而Name不同,Address相同,打印出来的是4条数据