1 class Program 2 { 3 static void Main(string[] args) 4 { 5 List<User> users = new List<User>(); 6 users.Add(new User("张三", "啊啊啊")); 7 users.Add(new User("张三", "哈哈哈哈哈哈"));//重复项,去重后将删掉 8 users.Add(new User("李四", "忐忐忑忑通天塔")); 9 10 List<User> List1 = users.Distinct().ToList();//通过User类的Equals实现去重 11 List<User> List2 = users.Where((x,i)=>users.FindIndex(z=>z.name == x.name) == i).ToList();//Lambda表达式去重 12 List<User> List3 = new List<User>();//通过循环方式去重 13 foreach(User user in users) 14 { 15 if( List3.Exists(x=>x.name==user.name) == false) 16 { 17 List3.Add(user); 18 } 19 } 20 21 foreach(List<User> list in new Object[]{ List1, List2, List3})//打印出三个List的元素 22 { 23 Console.Write(" List:\r\n"); 24 foreach(User u in list) 25 { 26 Console.WriteLine("\t" + u.ToString()); 27 } 28 } 29 Console.Read(); 30 } 31 } 32 33 class User:IEquatable<User>//继承IEquatable接口,实现Equals方法。List就可以使用Distinct去重 34 { 35 public string name { get; set; } 36 string address; 37 38 public User(string _name, string _address) 39 { 40 name = _name; 41 address = _address; 42 } 43 44 public override string ToString() 45 { 46 return string.Format("name:{0},\taddress:{1}", name, address); 47 } 48 49 public bool Equals(User other) 50 { 51 return this.name == other.name; 52 } 53 public override int GetHashCode() 54 { 55 return name.GetHashCode(); 56 } 57 }