2010-10-08 49 views

回答

8

使用SkipTake

var results = list.Skip(1).Take(4); 

编辑:请注意,这不是从你的问题清楚你用什么限制。如果你想成为包容性的两端,使用基于0的索引,你想:

var results = list.Skip(startIndex).Take(endIndex - startIndex + 1); 

注意,这不会让你得到0的结果虽然 - 你可能想使endIndex独家所以如果它等于startIndex,你什么也得不到。然后代码是:

var results = list.Skip(startIndex).Take(endIndex - startIndex); 

或者一种替代方法是反过来使用它们。例如,上述最后一个片段是等价于:

var results = list.Take(endIndex).Skip(startIndex); 
+0

不说清楚,如果他想改变这种选择索引2至4,而不是,说。你必须通过list.Skip(2)。然后拿(3)。 – kjn 2010-10-08 11:05:50

+0

@KJN:将进行编辑以清楚说明。 – 2010-10-08 11:08:41

2

这可能会为你工作:

list.Where((l, index) => index >= 1 && index <= 4 ) 
+2

请注意,即使逻辑上你知道你已经完成了迭代,也需要对*整个*序列进行评估。 – 2010-10-08 11:10:24

+0

是的好点。 – kjn 2010-10-08 11:20:10