这个问题已经有了答案:
How to check if all list items have the same value and return it, or return an “otherValue” if they don’t?
9个答案
下面检查字符串数组中的所有值是否相等,忽略大小写
string [] StringArray = new string[]{"xxx","xXx","Xxx"};
bool ValuesAreEqual = false;
for(int i= 0;i<StringArray.Length;i++)
{
if(i>=1)
{
ValuesAreEqual = StringArray[0].Equals(StringArray[i],StringComparison.InvariantCultureIgnoreCase);
if(!ValuesAreEqual)
{
break;
}
}
}
我怎么能用linq写这个?
最佳答案
如果你想知道是否所有都相等Enumerable.All
是有效的和可读的:
string firstItem = StringArray[0];
bool allEqual = StringArray.Skip(1)
.All(s => string.Equals(firstItem, s, StringComparison.InvariantCultureIgnoreCase));
All
也会在返回false
的第一个比较中中断。注意,我使用了静态string.Equals
来防止null
对象上出现空引用异常。顺便说一下,循环是不正确的,因为您开始在索引2而不是1进行比较:
if(i > 1 ) // indices are zero based
{
// ...
}