我有一个包含最少2个,最多10个字符串的简单数组。字符串条目是固定的(WI,CT,CTRW,GF)。我需要比较这个数组的内容,看看它们是否完全相同。我的工作原理,只要阵列大小为2-3个元素。如果它包含4个或更多元素,则返回TRUE,即使不是这种情况也是如此。我还没弄明白如何解决这个问题。我理解为什么它不起作用,但不知道如何解决这个问题。有什么建议? (以下代码)
for (int i = 1; i < numLogs; i++)
{
if(logType[i-1] == logType[i])
{
return true;
}
}
答案 0 :(得分:4)
你可以使用一点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。第二种解决方案更有效,因为它允许在集合中找到第二个字符串时立即返回结果,而第一个必须继续计数直到找到所有不同的项目。