c# – 删除列表中重复项的最佳性能和解决方案
发布时间:2020-12-15 23:33:20 所属栏目:百科 来源:网络整理
导读:我有一个清单: ListTest = new ListTest{new Test{Name="Test",Date="2016-06-13 18:32:01.380"},new Test{Name="Test2",Date="2016-06-13 18:32:29.117"},new Test{Name="Test3",Date="2016-06-13 18:32:40.930"},Date="2016-06-13 18:32:51.517"},new Tes
我有一个清单:
List<Test> = new List<Test>{ new Test{Name="Test",Date="2016-06-13 18:32:01.380"},new Test{Name="Test2",Date="2016-06-13 18:32:29.117"},new Test{Name="Test3",Date="2016-06-13 18:32:40.930"},Date="2016-06-13 18:32:51.517"},new Test{Name="Test",Date="2016-06-13 18:33:06.477"},..... } 如何删除具有重复Name值的项目,在实现最佳性能的同时保留唯一具有最新Date值的项目? 解决方法
这至少是最易读的方法,并假设Date实际上是DateTime:
tests = tests.GroupBy(t => t.Name) .Select(g => g.OrderByDescending(t => t.Date).First()) .ToList(); 这更有效: var latestTests = new Dictionary<string,Test>(tests.Count); foreach (Test t in tests) { Test test; if (latestTests.TryGetValue(t.Name,out test)) { if(test.Date < t.Date) latestTests[t.Name] = t; } else { latestTests.Add(t.Name,t); } } tests = latestTests.Values.ToList(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |