Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用lambda从数组中每隔一秒选择一个元素_C#_Linq_Lambda - Fatal编程技术网

C# 使用lambda从数组中每隔一秒选择一个元素

C# 使用lambda从数组中每隔一秒选择一个元素,c#,linq,lambda,C#,Linq,Lambda,C4.0。如何使用lambda表达式执行以下操作 int[] a = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 }; // Now fetch every second element so that we get { 0, 2, 4, 6 } 它将只选择由%mod运算符计算的偶数索引 5 % 2 // returns 1 4 % 2 // returns 0 根据MSDN: 余数运算符是您的朋友 int[] everySecond = a.Where((i,

C4.0。如何使用lambda表达式执行以下操作

int[] a = new int[8] { 0, 1, 2, 3, 4, 5, 6, 7 };
// Now fetch every second element so that we get { 0, 2, 4, 6 }
它将只选择由%mod运算符计算的偶数索引

5 % 2 // returns 1
4 % 2 // returns 0
根据MSDN:


余数运算符是您的朋友

int[] everySecond = a.Where((i, ind) => ind % 2 == 0).ToArray();
%运算符在除以第一个操作数后计算余数 到了第二天。所有数值类型都有预定义的余数运算符

使用Enumerable.Range的另一种方法

或使用按位进行更有效的偶数检查:


+1,我忘了,对于按位奇偶测试,where也有索引为+1的重载,这远远比“%”运算符更有效。如此优雅:-
int[] everySecond = a.Where((i, ind) => ind % 2 == 0).ToArray();
var result = Enumerable.Range(0, a.Length/2)
                       .Select(i => a[2*i])
                       .ToArray();
var result = a.Where((i, index) => (index & 1) == 0)
              .ToArray();