获取像这样的字节数组[0,0,0,0,0,1,1,1,1,3,3,3,3,0,0,0,0,0]
有没有人知道如何在linq中有效地检测1到3的变化?
答案 0 :(得分:0)
如果您想以最有效的方式找到所有变更索引:
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
答案 1 :(得分:0)
为什么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;
});