我有一个数字数组{3, 6, 1, 5, 5, 6},我试图从最后一个数字开始获取其他所有数字。

正确的结果将是6, 5, 6我能够使它起作用的唯一方法是使用Reverse

int[] digitList =  {3, 6, 1, 5, 5,6};
var rev = digitList.Reverse().Where((x, i) => i % 2 == 0).Reverse().ToList();
// Correct results in 6,5,6
var l = digitList.Where((x, i) => i % 2 == 0).ToList();
// Incorrect results in 3,1,5


没有反向,有没有办法做到这一点?我怎样才能知道Where()从另一端开始?

最佳答案

如果计数为奇数,则从头开始每隔一个数字,如果偶数为偶数,则从第二个开始获取其他每个数字(或跳过第一个),从而无需进行反向运算。例如:

int[] digitList = { 3, 6, 1, 5, 5, 6 };

//Skip 1 if count is odd, otherwise skip zero
var skipCount = digitList.Count() % 2 == 0 ? 1 : 0;

var l = digitList
    .Skip(skipCount)
    .Where((x, i) => i % 2 == 0)
    .ToList();

07-28 08:44