LINQ List <myobject> </myobject>中的项目范围

时间:2010-11-17 04:18:10

标签: linq range

使用Linq,我如何获得序数列表在5到27之间的对象列表。

MyObject有一个未知个数,所以有些东西都找不到。

“allItems”始终按顺序排列,因此需要按顺序排列。

像这样:

List<MyObject>  allItems = GetAllItems();
List<MyObject>  myRange = allItems.LINQSTATEMENTHERE(5 to 27th items);

2 个答案:

答案 0 :(得分:9)

使用Skip()和Take()的组合:

int from = 5;
int to = 27;
var myRange = allItems.Skip(from - 1).Take(to - from);

答案 1 :(得分:1)

由于您需要立即执行(您希望将结果加载到列表中),因此无需在此处使用LINQ;您可以在List<T>上使用实例GetRange方法:

List<MyObject> myRange = allItems.GetRange(from, to - from + 1);

当然,如果您想要延迟执行,或者您希望该技术应用于其他类型的序列,请使用Justin Niessner的技术。他的技术的一个好处是,如果用于表示范围的元素太少,它就不会爆炸。