c# - 从 C# 中的 List<> 中删除 3 个最旧的元素

标签 c# linq

假设我有一个对象:

public class CustomObj
{
    DateTime Date { get; set; }
    String Name { get; set; }
}

然后假设我有一个包含 20 个不同元素的列表。

var stuff = new List<CustomObj>
{
    { Date = DateTime.Now, Name = "Joe" },
    { Date = DateTime.Now.AddDays(1), Name = "Joe2" },
    { Date = DateTime.Now.AddDays(2), Name = "Joe3" },
    { Date = DateTime.Now.AddDays(3), Name = "Joe4" },
    { Date = DateTime.Now.AddDays(4), Name = "Joe5" },
    { Date = DateTime.Now.AddDays(5), Name = "Joe6" },
    { Date = DateTime.Now.AddDays(6), Name = "Joe7" },
    { Date = DateTime.Now.AddDays(7), Name = "Joe8" },
    { Date = DateTime.Now.AddDays(8), Name = "Joe9" },
    { Date = DateTime.Now.AddDays(9), Name = "Joe10" },
    { Date = DateTime.Now.AddDays(10), Name = "Joe11" }
}

如何删除最旧的 3 个元素?

stuff.RemoveAll(item => ???)

最佳答案

如果您只需要枚举项目,这将起作用:

stuff.OrderBy(item => item.Date).Skip(3);

如果你真的想要它的列表形式,你必须在之后调用 .ToList():

stuff = stuff.OrderBy(item => item.Date).Skip(3).ToList();

关于c# - 从 C# 中的 List<> 中删除 3 个最旧的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695671/

相关文章:

c# - bool 值求值的 LINQ to SQL 顺序

c# - 循环遍历 List<string> 但只取其中每个字符串的一部分

c# linq where on object lists 非常慢

c# - 如何从 wix 安装具有 .NET Core 运行时先决条件的网络核心应用程序

c# - C#中的基本多线程问题

c# - 无法打开下载保存对话框

linq - Entity Framework LINQ 多列计数(不同)

c# - Linq to object 动态查询是否可能?

c# - 使用 Rhino Mocks 创建内存数据库以供开发代码和用户界面时使用

c# - 如何从另一个HttpResponseMessage返回PDF内容到浏览器?