C#- 泛型去除重复项
今天被这个问题纠结了好一会。如何去除重复项,我遇到的问题是,在判断是否重复的条件是有两个,一个信息来源,一个是信息标题。
最后使用了哈希后很好的解决,感觉挺高效的。代码贴下,做一个备忘
//防止群发,出现重复通知,去除重复项 private List<UserEmail> GetNotRepeatSentingEmail(List<UserEmail> LSentingEmail) { List<UserEmail> Result = new List<UserEmail>(); Hashtable hash = new Hashtable(); Result.Clear(); hash.Clear(); for (int i = 0; i < LSentingEmail.Count; i++) { if (!hash.ContainsKey(LSentingEmail[i].T_To) && !hash.ContainsValue(LSentingEmail[i].T_Subject)) { hash.Add(LSentingEmail[i].T_To, LSentingEmail[i].T_Subject); Result.Add(LSentingEmail[i]); } } return Result; }
实际,这种做法不正确,
经实验得再改进成如下:
//防止群发,出现重复通知,去除重复项 private List<UserEmail> GetNotRepeatSentingEmail(List<UserEmail> LSentingEmail) { List<UserEmail> Result = new List<UserEmail>(); Hashtable hash = new Hashtable(); Result.Clear(); hash.Clear(); for (int i = 0; i < LSentingEmail.Count; i++) { string strKeys = LSentingEmail[i].T_To + "|" + LSentingEmail[i].T_Subject; if (!hash.ContainsKey(strKeys )) { hash.Add(strKeys,""); Result.Add(LSentingEmail[i]); } } return Result; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步