C# List去重的幾種方法
阿新 • • 發佈:2022-04-14
List<User> users = new List<User>(); users.Add(new User("張三", "永豐路299號")); users.Add(new User("張三", "上地西路8號"));//重複項,去重後將刪掉 users.Add(new User("李四", "海鷹路甲一號"));
第一種用字典篩選
Dictionary<string,User> dic = newDictionary
<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();