我有一个清单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/

10-12 13:27