使用Linq在两条记录之间获取记录

时间:2012-05-28 15:28:32

标签: c# linq collections

我有一个对象列表,需要从此列表中获取记录列表。就像我有国家一样,我需要获得名称为“Australia”和国家“Indonasia”的国家/地区列表,列表不会被排序。

使用c#。

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

2 个答案:

答案 0 :(得分:4)

如果您执行以下操作:

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

你将获得你想要的结果,而不会在列表中迭代3次。

(假设您所在的国家/地区是CountryName字符串属性的项目。)

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

答案 1 :(得分:0)

这应该做的工作

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