c# - 从列表中选择最后一个错误的项目

标签 c# linq

我有一个包含项目的列表,这些项目具有 Time 属性。如果我想选择 Time 等于或大于某个 startTime 的所有项目,那么我会这样写:

var newList = list.Where(i => (i.Time >= startTime));

但现在我还想获取最后一项,其中时间小于startTime。有没有更好的方法来实现它?

例如,我有一个列表,其中的项目具有来自此列表的 Time:

[5:32, 5:46, 5:51, 6:07, 6:11, 6:36]

我们将 startTime 指定为 6:00

现在我们想得到这个时间:

[5:51, 6:07, 6:11, 6:36]

最佳答案

一次获取整个列表:

var newList = list
    .OrderByDescending(i => i.Time)
    .Take(list.Count(j => j.Time >= startTime) + 1)
    .OrderBy(k => k.Time); //Optional

根据Cognition的建议:

var newList = list
    .OrderBy(i => i.Time)
    .Skip(list.Count(j => j.Time < startTime - 1));

关于c# - 从列表中选择最后一个错误的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37354980/

相关文章:

c# - 未找到属性设置方法,异常 System.ArgumentException

c# - if 内的作用域变量

c# - WCF:使用消息契约创建 Soap header

c# - ArgumentOutOfRangeException 参数名称 : Index

c# - LinqDataSource 选择语法

c# - 从 C 包含文件生成 C# 包装器

c# - 自定义验证错误

c# - 如何从使用 EPPLUS 生成的 excel 中获取列

c# - 3.5 VS 4.0 .NET 框架

c# - 无法查询私有(private)成员支持的 LINQ 字段