如何使用linq查询使用索引从列表中检索值?

时间:2010-10-08 10:55:13

标签: c# linq

我有一个包含5,6,7,8,5,4,3的int列表。我喜欢使用索引从列表中检索值。例如,我将开始索引设为1,结束索引4我将在新列表中获得6,7,8,5。我怎么能在Linq中做到这一点?

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:2)

这可能适合你:

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