使用从哪里获取从最后一个开始的所有其他数字

时间:2018-01-10 10:19:10

标签: c# linq

我有一组数字{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()从另一端开始?

2 个答案:

答案 0 :(得分:4)

如果计数是奇数,那么从开始的每个其他数字,如果它甚至然后从第二个数字中取出每个其他数字(或跳过第一个),则不需要进行反向操作。例如:

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();

答案 1 :(得分:2)

你必须检查奇数/偶数长度数组;修改你当前的代码 应该更改== 0条件:

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

var rev = digitList
  .Where((x, i) => i % 2 != digitList.Length % 2) // not "== 0"
  .ToList();