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();