c# - 在特定条目之后选择有序列表中的项目

标签 c# linq

我有一个有序的对象列表。我可以使用以下代码轻松地在列表中找到一个项目:

purchaseOrders.FirstOrDefault(x => x.OurRef.Equals(lastPurchaseOrder, StringComparison.OrdinalIgnoreCase))

我想要做的是选择列表中出现在该条目之后的所有项目。如何最好地实现这一目标?会不会是获取这个item的index,然后选择一个range?

最佳答案

听起来你想要SkipWhile :

var orders = purchaseOrders.SkipWhile(x => !x.OurRef.Equals(...));

一旦迭代器停止跳过,它就不会为后面的条目评估谓词。

请注意,该代码将包括与谓词不匹配的条目,即具有给定引用的条目。它基本上会为您提供从该订单开始的所有条目。如果你想跳过它,你总是可以使用 .Skip(1):

// Skip the exact match
var orders = purchaseOrders.SkipWhile(x => !x.OurRef.Equals(...)).Skip(1);

请注意,这将是线性的...如果列表按 x.OurRef 排序,您可以使用二进制搜索找到索引并从那里开始获取范围...但我除非您发现更简单的代码会给您带来问题,否则不会这样做。

关于c# - 在特定条目之后选择有序列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31590605/

相关文章:

c# - 根据模式匹配的索引搜索 List<> 的一部分

c# - 从客户端向服务器发送 lambda 表达式

c# - JSON.Net 获取原生类型的值

c# - 来自 C# 应用程序的加密

c# - 将用户控件添加到列表框

c# - 我可以使用 ".Include"使用 Entity Framework 4 加载分层数据并根据某些条件过滤导航属性吗

c# - 两个相等性检查在一个 Where 中,反之亦然以提高效率

c# - 对列表进行分组,并且仅当输入是列表时才获取不同的值

c# - 保存位图时不保留 Alpha 值

c# - 不完整的串口读取 C#