如何检查数组中的所有值是否相等

FPG*_*PGA 9 c# linq

以下检查字符串数组中的所有值是否相等,忽略大小写

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么能用LINQ写这个?

Tim*_*ter 17

如果你想知道所有是否相同Enumerable.All是有效和可读的:

string firstItem = StringArray[0];
bool allEqual = StringArray.Skip(1)
  .All(s => string.Equals(firstItem, s, StringComparison.InvariantCultureIgnoreCase));
Run Code Online (Sandbox Code Playgroud)

All在第一次返回的比较中也会中断false.请注意,我使用静态string.Equals来防止null对象上的空引用异常.

顺便说一句,你的循环是不正确的,因为你开始比较索引2而不是1:

if(i > 1 ) // indices are zero based
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)


And*_*rew 6

string[] StringArray = new string[] {"xxx,xXx,Xxx"};
bool areEqual = StringArray.Select(s => s.ToLower()).Distinct().Count()==1;

bool areEqual = StringArray.GroupBy(s => s.ToLower()).Count() == 1;
Run Code Online (Sandbox Code Playgroud)

只是在这里原创:)