2012-10-26 18 views

Odpowiedz

22
int[] list = a.Where((value, index) => index % 2 == 0) 
       .ToArray(); 

będzie wybrać tylko jeszcze indeksów a oblicz przez (mod) operatora %.

5 % 2 // returns 1 
4 % 2 // returns 0 

Zgodnie z MSDN:

operator

% Operator

+1

+1, zapomniałem, że ' gdzie 'ma również przeciążenie z indeksem :) –

11

Innym sposobem korzystania Enumerable.Range

var result = Enumerable.Range(0, a.Length/2) 
         .Select(i => a[2*i]) 
         .ToArray(); 

lub użyj bitowego na bardziej wydajne, by sprawdzić nawet:

var result = a.Where((i, index) => (index & 1) == 0) 
       .ToArray(); 
+2

+1 dla bitowego testu nieparzystości/parzystości, który jest o wiele bardziej wydajny niż operator "%". Tak elegancko :-) – Askolein

+1

http://stackoverflow.com/questions/2229107/what-is-the-fastest-way-to-find-if-a-number-is-even-or-odd –