使用 Linq 获取两个记录之间的记录
本文关键字:记录 两个 之间 Linq 获取 使用 | 更新日期: 2023-09-27 18:35:29
我有一个对象列表,需要从这个列表中获取记录列表。 就像我有的国家一样,我需要获取名称为"澳大利亚"和国家"印度尼西亚"之间的国家/地区列表,该列表不会被排序。
我使用的是 c#。
我尝试使用类似的东西,获取第一个和第二个的索引,然后使用它来获取带有 for 循环的列表,但如果可以在单个查询中完成,那就很方便了。
如果执行以下操作:
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")