C# List去重的幾種方法


List<User> users = new List<User>();  
users.Add(new User("張三", "永豐路299號"));  
users.Add(new User("張三", "上地西路8號"));//重復項,去重后將刪掉  
users.Add(new User("李四", "海鷹路甲一號"));  

第一種用字典篩選
Dictionary<string,User> dic = new
Dictionary<string,User>();
users.ForEach(s=>{if(!dic.ContainsKey(s.name)) dic[s.name]=s;})


第二種使用
users.Where((x,i)=>users.FindIndex(s=>s.name==x.name)==i).ToList();
這條語句返回結果只保留這個List中重復的元素的第一個(name相同認為重復)

第三種 自定義去重器

public class Compare:IEqualityComparer<User>
{
  public bool Equals(User x,User y)
{
   return x.name == y.name;//可以自定義去重規則,此處將name相同的就作為重復記錄,不管其他是什么
//return (t1.Name== t2.Name && t1.Sex== t2.Sex && t1.Age== t2.Age);
}
public int GetHashCode(User ovj)
{
return obj.name.GetHashCode();
//return t.ToString().GetHashCode();
}
}
users.Distinct(new Compare()).ToList();


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM