c# - 使用 LINQ 删除重复记录

标签 c# asp.net linq linq-to-entities

<分区>

我想使用 linq to object 来删除重复的记录。 我希望最终列表将包含具有最新日期的唯一记录。 我有以下列表

AId             BId           C(date)
**1              2               24/5/2015**
3                6               24/5/2015
**1              2               23/5/2015** (Need To Remove)

我想删除记录 3。

有什么建议吗?

最佳答案

您可以使用 GroupBy,然后使用 SelectOrderByDescending 对日期进行排序。

public class Item 
{
    public int Aid {get;set;}

    public int Bid {get;set;}

    public DateTime CDate {get;set;}
}

void Main()
{
    var items = new List<Item>
    {
        new Item { Aid = 1, Bid = 2, CDate = new DateTime(2015, 5, 24)},
        new Item { Aid = 3, Bid = 6, CDate = new DateTime(2015, 5, 24)},
        new Item { Aid = 1, Bid = 2, CDate = new DateTime(2015, 5, 23)},        
    };

    var result =  items.GroupBy(i => i.Aid)
                  .Select(group => 
                        new { Key = group.Key,
                              Items = group.OrderByDescending(x => x.CDate) })
                  .Select (g => g.Items.First());


    result.Dump();
}

关于c# - 使用 LINQ 删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30421153/

相关文章:

c# - 关于Web应用程序体系结构,域类和业务类之间有什么区别?

c# - ASP.Net:在后面的代码中添加额外的代码到 Page_Load

c# - 让 SequenceEqual 为列表工作

C# 使用多个参数查询实体

c# - 使用c#在wpf中的弹出定位

c# - 使用 Linq 从 xml 文件中读取值

linq - C# Linq 在多列上连接 2 个表并使用 GROUP BY 进行计数

c# - 图片不在 Chrome 和 FF 上显示

asp.net - 无法拖动滚动条

linq - 域模型 + LINQ to SQL 示例