检测linq中的阵列变化



获取这样的字节数组[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

相关内容

  • 没有找到相关文章

最新更新