使用Skip和Take来拾取数组中的备选项

本文关键字:数组 选项 Skip Take 使用 | 更新日期: 2023-09-27 18:15:00

我有一个包含以下项目的字符串数组:

string s = "M,k,m,S,3,a,5,E,2,Q,7,E,8,J,4,Y,1,m,8,N,3,P,5,H";
 var items = s.split(',');
 var topThree = items.Take(3);
 var alternating1 = items.Skip(3).Take(1).Skip(1).Take(1).Skip(1).Take(1).Skip(1).Take(1);

alternating1变量没有任何内容,我想我明白为什么。在Skip then Take之后,它会返回1个元素,所以它会尝试Skip(1)和Take(1),但是那里什么都没有。

我有办法做这个交替的图案吗?

使用Skip和Take来拾取数组中的备选项

最简单的方法是使用Where重载,它接受一个索引:

var alternating = input.Where((value, index) => (index & 1) == 0);

或者使用% 2代替,相当于:

var alternating = input.Where((value, index) => (index % 2) == 0);