使用 Linq 获取两个记录之间的记录

本文关键字:记录 两个 之间 Linq 获取 使用 | 更新日期: 2023-09-27 18:35:29

我有一个对象列表,需要从这个列表中获取记录列表。 就像我有的国家一样,我需要获取名称为"澳大利亚"和国家"印度尼西亚"之间的国家/地区列表,该列表不会被排序。

我使用的是 c#。

我尝试使用类似的东西,获取第一个和第二个的索引,然后使用它来获取带有 for 循环的列表,但如果可以在单个查询中完成,那就很方便了。

使用 Linq 获取两个记录之间的记录

如果执行以下操作:

var elementsBetween = allElements
        .SkipWhile(c => c.Name != "Australia")
        .Skip(1) // otherwise we'd get Australia too
        .TakeWhile(c => c.Name != "Indonasia");

您将获得所需的结果,而无需遍历列表 3 次。

(这是假设您的国家/地区是例如 Country具有 Name 字符串属性的项。

请注意,这根本不会对国家/地区进行排序 - 从您的问题中不清楚您是否想要这样做,但在SkipWhile之前添加一个OrderBy是微不足道的。

这应该可以完成这项工作

var query = data.SkipWhile(x => x != "Australia").TakeWhile(x => x != "Indonesia")