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

Dav*_*vid 5 c# linq

假设我有一个对象:

public class CustomObj
{
    DateTime Date { get; set; }
    String Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后,假设我有一个包含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" }
}
Run Code Online (Sandbox Code Playgroud)

如何删除3个最古老的元素?

stuff.RemoveAll(item => ???)
Run Code Online (Sandbox Code Playgroud)

Joh*_*sch 8

如果您只需要枚举项目,这将有效:

stuff.OrderBy(item => item.Date).Skip(3);
Run Code Online (Sandbox Code Playgroud)

如果你真的想要它以列表形式,你将不得不打电话.ToList():

stuff = stuff.OrderBy(item => item.Date).Skip(3).ToList();
Run Code Online (Sandbox Code Playgroud)