我有一个清单List<T> instances
其中T具有日期变量和字符串ID。现在,我需要该列表以删除字符串ID上的重复项,并仅保留最新日期。有人知道吗?
我正在考虑创建一个新列表List<T> final
并遍历实例列表。在循环中,检查列表中是否包含具有ID的项目,然后添加该项目或删除日期较短的重复项目。
但是我不知道如何检查T类变量上的包含。
我必须使用lambda表达式执行此操作吗?或覆盖列表的Equals()?实际上忘记了怎么做。有什么帮助吗?
或当然总是欢迎一个更好的主意!
非常感谢
最佳答案
正如Tim Robinson所建议的:
var instances = new List<Data>() {
new Data() {
Name = "Two",
Date = new DateTime(1998, 1, 1)
},
new Data() {
Name = "Two",
Date = new DateTime(1997, 1, 1)
},
new Data() {
Name = "One",
Date = new DateTime(1998, 1, 1)
},
new Data() {
Name = "One",
Date = new DateTime(1997, 1, 1)
},
new Data() {
Name = "Three",
Date = new DateTime(1998, 1, 1)
},
new Data() {
Name = "Three",
Date = new DateTime(1997, 1, 1)
}
};
var groupedMax = from i in instances
group i by i.Name into g
select new Data() {
Name = g.Key,
Date = g.Max(i => i.Date)
};
public class Data
{
public string Name { get; set; }
public DateTime Date { get; set; }
}
关于c# - 列出特定类别的重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1865614/