C# 使用lambda从数组中每隔一秒选择一个元素
C4.0。如何使用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,
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();