C# 去掉List重复元素的方法
2017-12-08 13:09
281 查看
比如linq Distinct 等等都可以,看看网上的这个例子:去掉modelList中title重复的内容,不区分大小写
解决方案一:这里比较的前提是对象的哈希代码相等。否则不会比较,因为哈希代码不相等。两个对象显然不相等
调用:
解决方案二:
当然。如果你仅仅比较两个值是否相等。
class Program { static void Main(string[] args) { List<Model> modelList = new List<Model>() { new Model() { ID = 1, Title = "abcde" }, new Model() { ID = 2, Title = "ABCDE" }, new Model(){ ID = 3, Title = "AbcdE" }, new Model() { ID = 4, Title = "A" }, new Model() { ID = 5, Title = "a" } }; Console.Read(); } } public class Model { public int ID { get; set; } public string Title { get; set; } }
解决方案一:这里比较的前提是对象的哈希代码相等。否则不会比较,因为哈希代码不相等。两个对象显然不相等
//定义一个类继承IEqualityComparer接口 public class ModelComparer : IEqualityComparer<Model> { public bool Equals(Model x, Model y) { return x.Title.ToUpper() == y.Title.ToUpper(); } public int GetHashCode(Model obj) { return obj.Title.ToUpper().GetHashCode(); } }
调用:
modelList = modelList.Distinct(new ModelComparer()).ToList();
解决方案二:
var title = modelList.GroupBy(m => m.Title.ToLower().Trim()).Select(m => new { ID = m.FirstOrDefault().ID }); modelList = modelList.Where(m => title.Select(mo => mo.ID).Contains(m.ID)).ToList(); foreach (var item in modelList) { Console.WriteLine(item.ID + "\t" + item.Title); }
当然。如果你仅仅比较两个值是否相等。
List<string> li1 = new List<string> { "8", "8", "9", "8", "0", "9" }; li1 = li1.Distinct().ToList();
相关文章推荐
- C# 去掉List重复元素的方法
- C# 去掉List重复元素的方法
- Coldfusion:把一个List里的重复元素去掉的一种方法。
- c#一个list去掉其中重复元素
- c# 如何中List<object>中去掉object对象中的重复列数据?
- [导入]去掉数组中重复的元素方法
- 兰亭集势笔试题:用最优方法从LinkedList列表中删除重复元素
- set 去掉list中的重复元素
- C#遍历List并删除元素的方法概述
- 去掉List中重复元素
- C#小技巧(二) 用List.Contains方法筛除重复项
- 用一个方法去掉一个数组的重复元素
- c#中List的元素遍历(foreach)和去重复(distinct)
- C#遍历List并删除某个或者几个元素的方法
- 去掉List集合重复值的四种方法
- 去掉list中重复元素并合并相同对象
- 编写一个方法,去掉一个数组中的重复元素
- python 去掉list中的重复元素
- c# list 删除重复元素
- java去掉list中的重复元素