如何检查二维数组中的所有元素在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;
}
}
您可以使用一点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
第二种解决方案更有效,因为它允许在集合中找到第二个字符串时立即返回结果,而第一个必须继续计数,直到找到所有不同的项。