我可以滚动一个方法,伪:
bool Compare(IList left, int lIndex, IList right, int rIndex, int num)
{
for(int i=0;i<num;++i)
{
if(left[lIndex+i] != right[rIndex+i])
{
return false;
}
}
return true;
}
鉴于L =[1,2,3,4,5,6,7,8]
和R = [5,6,7,8,9]
:Compare(L,5,R,1,3) == true
我觉得我应该能够做一个简单的 LINQ 版本,但我不确定如何处理索引。它可以写成一个简单的 LINQ/lambda 吗?否则我会把它作为一个实用方法。
<小时/>顺便说一句,有一个标题非常相似的问题,但它问的是不同的事情:https://stackoverflow.com/questions/33812323/compare-two-arrays-using-linq
最佳答案
您可以 Skip
、 Take
和 SequenceEqual
:
return left.Skip(lIndex).Take(num).SequenceEqual(
right.Skip(rIndex).Take(num))
请注意,您应该将 Compare
方法设为通用方法,并改用通用 IList<T>
。
关于c# - 我可以使用 LINQ 比较两个数组中的范围吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61230520/