在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文整理了C#中给List根据对象属性去重的四种方法。 方法一:循环遍历List,借助Dictionary存储去重的对象。 Dictionary<string, Item> result = new Dictionary<string, Item>(); foreach (Item item in list)//list为待去重列表 { Item temp; if (!result.TryGetValue(item.name, out temp)) { result.Add(item.name, item); } } List<Item> result_list = result.Values.ToList(); 方法二:利用ToLookup查找,并转为Dictionary List<Item> result = list.ToLookup(item => item.name).ToDictionary(item => item.Key, item => item.First()).Values.ToList(); 方法三:自定义Compare方法实现 List<Item> result = list.Distinct(new Compare()).ToList();
方法四:利用GroupBy分组实现 List<Item> result = list.GroupBy(item => item.name).Select(item => item.First()).ToList(); 其中,对象Item类如下: public class Item { public string name { get; set; } public string value { get; set; } } Compare方法如下: public class Compare : IEqualityComparer<Item> { public bool Equals(Item a, Item b) { return a.name == b.name; } public int GetHashCode(Item obj) { return obj.name.GetHashCode(); } } |
请发表评论