用LINQ替换(int i = 0; i< Count; i ++)

时间:2014-11-13 16:34:25

标签: c# .net linq

最佳替换方式是什么:

for(int i=0; i<10; i++) 
{
   if(!members[i].Equals(anotherMembers[i]))
   {
      return false;
   }
}

使用LINQ表达式?

1 个答案:

答案 0 :(得分:3)

我认为LINQ不是更具可读性的选项,但一般来说,你需要首先Zip序列才能处理同一索引的对:

var allSame = members.Zip(anotherMemebers, (x,y)=> Tuple.Create(x,y))
       .All(t => t.Item1.Equals(t.Item2)); // or other operation on pairs

正如Habib所指出的,如果你只需要比较序列SequenceEqual可能是更好的选择。

由于@juharr评论.Take(10)可能需要关闭匹配原始循环,但LINQ版本更宽容 - 您需要检查项目计数以完全匹配原始循环中的所有“超出范围”错误。