【问题标题】:c# lambda get the latest items on the generic list if the item is duplicatec# lambda 如果项目重复,则获取通用列表中的最新项目
【发布时间】:2013-04-27 07:00:33
【问题描述】:

如果有重复项,我想从列表中删除旧项目。

这是我的示例列表:

1         Item1       Apr 27, 2013        $100
2         Item2       Apr 25, 2013        $200
3         Item3       Apr 24, 2013        $150
4         Item1       Apr 26, 2013        $100
5         Item3       Apr 25, 2013        $150

我的预期结果是:

1         Item1       Apr 27, 2013        $100
2         Item2       Apr 25, 2013        $200
5         Item3       Apr 25, 2013        $150

【问题讨论】:

    标签: asp.net-mvc c#-4.0 lambda


    【解决方案1】:

    您可以使用 LINQ 获取新列表,仅包含适当的元素:

    var items = source.GroupBy(x => x.Item)
                      .Select(g => g.OrderByDescending(x => x.Date).First())
                      .ToList();
    

    【讨论】:

    • 如果结构是定义的类而不是通用查询,它必须实现 GetHashCode/Equals 才能使 GroupBy 工作。
    • @amhed 确实如此,但是对于您要分组的属性,而不是对象本身。我假设 Item 列是一个字符串,所以它可以开箱即用。
    猜你喜欢
    • 2014-01-31
    • 2019-10-13
    • 2020-07-14
    • 2023-03-17
    • 2014-11-01
    • 1970-01-01
    • 2015-06-25
    • 2010-11-26
    • 1970-01-01
    相关资源
    最近更新 更多