如何使用LINQ获取列表指定索引区间内的部分数据
LINQ提取指定下标范围元素实现方案
前提假设
你拥有的原始数据列表实现了IEnumerable<T>接口(例如List<int>类型的sourceList,存储了你提到的1000条数值数据)。
实现方法
方法1:Skip + Take 组合(推荐)
跳过前900条(下标0899),再取出后续99条数据(恰好覆盖下标900998):
// 998 - 900 + 1 = 99,即需要提取的元素总数 var result = sourceList.Skip(900).Take(99).ToList();
该方法返回的result是新的列表,新下标从0开始,刚好对应你要求的输出格式:result[0]为原下标900的8975,result[98]为原下标998的10。
方法2:带索引的Where过滤
直接通过元素的原始下标判断是否符合范围:
var result = sourceList.Where((value, index) => index >= 900 && index <= 998).ToList();
效果和方法1完全一致。
额外说明
如果需要在结果中保留原始下标信息,可以用匿名类对数据做包装:
var resultWithOriginIndex = sourceList .Select((value, index) => new { OriginalIndex = index, Value = value }) .Where(item => item.OriginalIndex >= 900 && item.OriginalIndex <= 998) .ToList();
注意:使用上述代码前需要先引入LINQ命名空间,在代码文件头部添加
using System.Linq;即可。
内容的提问来源于stack exchange,提问作者Ralph Jason Caballes
相关产品推荐
相关产品推荐

