C# 比较C语言中的多个字符串#

C# 比较C语言中的多个字符串#,c#,string,compare,C#,String,Compare,我希望能够比较多个字符串,如果它们都相等,则返回true。如果任何字符串等于“N/A”,则在比较中忽略它们。例如: string1 = "hi"; string2 = "hi"; string3 = "hi"; string4 = "N/A"; 将返回true,但: string1 = "hi"; string2 = "hey"; string3 = "hi"; string4 = "hi"; 将返回false 谢谢您的帮助。假设您已将字符串存储在类似集合的数组或列表中,您可以使用: if

我希望能够比较多个字符串,如果它们都相等,则返回
true
。如果任何字符串等于“N/A”,则在比较中忽略它们。例如:

string1 = "hi";
string2 = "hi";
string3 = "hi";
string4 = "N/A";
将返回
true
,但:

string1 = "hi";
string2 = "hey";
string3 = "hi";
string4 = "hi";
将返回
false


谢谢您的帮助。

假设您已将字符串存储在类似集合的数组或列表中,您可以使用:

if (myStrings.Where(s => s != "N/A").Distinct().Count() > 1)
解释:您可以将所有字符串与您选择的其中一个进行比较(我选择第一个),如果其中一个不同
allEqual
必须为false。我需要使用
FirstOrDefault
,因为可能所有字符串都是“N/A”或列表为空,那么
First
将抛出异常


这个问题已经得到了回答,但我想我会说出最明显的代码:

bool notEqual = false;
for (int i = 0; i < list.Count - 1; i++) {
   for (int j = i + 1; j < list.Count; j++) {
      if (!(list[i].Equals(list[j])) {
         notEqual = true;
         break;
      }
   }
}
bool notEqual=false;
for(int i=0;i
想法相当简单。对于第一个元素,您必须查看下一个(长度-1)元素。但是,对于第二个元素,您已经将其与第一个元素进行了比较,因此您可以查看下一个(长度-2)元素。您以长度-1结束,因为在这一点上,您将比较最后一个元素和最后一个元素,这是最终可能的比较


当然,上面的答案要简洁得多。这只是为了向您展示最基本的C级智能的实际情况。

您使用什么代码进行比较?建议:使用
Any()
而不是
Count()
。尝试了此操作,但当其中一个字符串为different@BrianRasmussen:通常我会同意,但是如何将相同的逻辑应用于
Any
Distinct
返回唯一的字符串,以便
Any
始终返回
true
@TimSchmelter:
.Skip(1).Any()
谢谢,这正是我想要的!
bool notEqual = false;
for (int i = 0; i < list.Count - 1; i++) {
   for (int j = i + 1; j < list.Count; j++) {
      if (!(list[i].Equals(list[j])) {
         notEqual = true;
         break;
      }
   }
}