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;
}
}
}