如何检查二维数组中的所有元素在C#中是否相等

本文关键字:元素 是否 何检查 检查 二维数组 | 更新日期: 2024-09-21 01:01:42

我有一个简单的数组,它包含最少2个,最多10个字符串。字符串条目是固定的(WI、CT、CTRW、GF)。我需要比较这个数组的内容,看看它们是否都相等。只有当数组的大小是2-3个元素时,我的方法才有效。如果它包含4个或4个以上的元素,即使不是这样,它也会返回TRUE。我还没想好怎么解决这个问题。我理解为什么它不起作用,但不知道如何绕过这个问题。有什么建议吗?(代码如下)

for (int i = 1; i < numLogs; i++)
{           
  if(logType[i-1] == logType[i])
  {
   return true;
   }
}

如何检查二维数组中的所有元素在C#中是否相等

您可以使用一点Linq:

return logType.Cast<string>().Distinct().Count() == 1;
  • Cast<string>string[,]数组转换为IEnumerable<string>,因此您可以使用传统的Linq扩展方法
  • Distinct获取列表中不同元素的集合
  • Count返回上一集合中的项目数

这里有一个更高效但不太容易阅读的解决方案:

return !logType.Cast<string>().Distinct().Skip(1).Any();
  • Cast<string>string[,]阵列转换为IEnumerable<string>
  • Distinct获取列表中不同元素的集合
  • Skip(1)忽略前一集合中的第一个项目
  • 如果上一个集合中有任何项目(在跳过的项目之后),则Any返回true
  • 最后,用!否定该结果。请注意,这意味着如果输入数组为空,则该方法将返回true

第二种解决方案更有效,因为它允许在集合中找到第二个字符串时立即返回结果,而第一个必须继续计数,直到找到所有不同的项。