获取这样的字节数组[0,0,0,0,0,1,1,1,3,3,3,0,0,00,0,0]
有人知道如何在linq中有效地检测从1到3的变化吗?
为什么选择Linq
?您可以通过简单的循环来实现这一点。
int previous = array[0];
for(int i=1;i< array.Length;i++)
{
if(Math.Abs(array[i]- previous) > 1) // use appropriate jump
{
//logic
}
previous = array[i];
}
如果您正在寻找Linq
解决方案,您可以这样做。
int previous = array[0];
array.FirstOrDefault(x=>
{
var retValue = Math.Abs(x- previous) > 1;
previous = x;
return retValue;
});
如果您想以最有效的方式找到所有更改索引:
List<int> changeIndexes = new List<int>();
for(int i = 1; i < array.Length; i++)
if(array[i] != array[i-1])
changeIndexes.Add(i);
在索引方面,Linq并不是最好的工具。
如果你只想找到1变为3的索引,请相应地修改条件:
if(array[i] == 3 && array[i-1] == 1) ... // break the loop if you only want to find the first