Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我可以使用LINQ比较两个阵列中的范围吗?_C#_Linq - Fatal编程技术网

C# 我可以使用LINQ比较两个阵列中的范围吗?

C# 我可以使用LINQ比较两个阵列中的范围吗?,c#,linq,C#,Linq,我可以滚动一个方法,伪: 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; } bool比较(IList left、int lIndex、IList right

我可以滚动一个方法,伪:

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;
} 
bool比较(IList left、int lIndex、IList right、int rIndex、int num)
{
对于(int i=0;i您可以,并且:

请注意,您应该将
Compare
方法设置为泛型,并改用泛型
IList

您可以尝试此方法

    int num = 3,lIndex =5,rIndex =1;

    var L = (new List<int>(){1,2,3,4,5,6,7,8}).Skip(lIndex).Take(num).ToList();
    var R = (new List<int>(){5,6,7,8,9}).Skip(rIndex).Take(num).ToList();

    var result = L.Count() == R.Count() && !R.Except(L).Any() && !L.Except(R).Any() && string.Join(",",L).Equals(string.Join(",",R));
int num=3,lIndex=5,rIndex=1;
var L=(new List(){1,2,3,4,5,6,7,8}).Skip(lIndex).Take(num).ToList();
var R=(new List(){5,6,7,8,9}).Skip(rIndex).Take(num).ToList();
var result=L.Count()==R.Count()&&&!R.Except(L).Any()&&&!L.Except(R.Any()&&&string.Join(“,”,L).Equals(string.Join(“,”,R));

不是在编译器上,而是类似于Left.Skip(3)、Intersect(Right.Skip(1)、Take(4)).Count()==4这很好,谢谢。对我来说没关系,但这最终是分配新对象还是每个操作都会向原始对象返回某种类型的palce holder?@Mr.Boy它确实创建了实现
IEnumerable
的新对象,尽管没有创建新列表。它们基本上是一个“视图”在您的原始列表中。因此我希望这比for循环有更多的开销。好的,但我们讨论的是为这种用途设计的非常轻的对象…所以我可以接受。谢谢。您应该记住,它只适用于泛型
IList
,OP示例使用非泛型
IList
@PavelAnikhouski my code是伪的,但感谢您指出这一点
    int num = 3,lIndex =5,rIndex =1;

    var L = (new List<int>(){1,2,3,4,5,6,7,8}).Skip(lIndex).Take(num).ToList();
    var R = (new List<int>(){5,6,7,8,9}).Skip(rIndex).Take(num).ToList();

    var result = L.Count() == R.Count() && !R.Except(L).Any() && !L.Except(R).Any() && string.Join(",",L).Equals(string.Join(",",R));