比较列表中的所有字符串 - C#

时间:2017-03-29 02:42:03

标签: c# string list compare

我有union { int integer; int *pointer; } myMixedArray[10] ; ,其中已知List<String> clr9九。

我想知道的是如何简化代码中稍后会发生的事情。

Count

我已经尝试过了:

else if(clr9[0].Equals(clr9[1]) && clr9[0].Equals(clr9[2]) && clr9[0].Equals(clr9[3]))

但它似乎不起作用。有什么方法可以避免使用&符号吗? 基本上只是询问是否有办法找出所有4个字符串是否相同而不会使if语句混乱。

4 个答案:

答案 0 :(得分:1)

您可以区分列表以删除重复项并检查长度。

e.g。

clr9.Distinct().Count() == 1

或者,如果您希望它不区分大小写

clr9.Distinct(StringComparer.CurrentCultureIgnoreCase).Count() == 1

答案 1 :(得分:1)

区别可行,但我认为直接测试平等更能表达意图:

if(clr9.Skip(1).All(c => c.Equals(clr9[0])))

答案 2 :(得分:0)

好吧,如果您只检查单个列表中的所有字符串,例如curve(dnorm(x), -4, 4, lwd = 3) segments(-2, 0, 2, 0, col = 'red', lend = 2, lwd = 20) 。你可以做的是使用LINQ clr9

Distinct

Ť

希望它有所帮助!

答案 3 :(得分:0)

我经常遇到这种情况,我已经为它编写了一个简单的扩展方法。

public static bool In<T>(this T val, params T[] options)
{
    return options.Contains(val);
}

然后在你的代码声明中使用它

else if (clr9[0].In(clr9.Skip(1).ToArray()))

根据OP的评论进行编辑,这也适用:

else if (clr9[0].In(clr9[1], clr9[2], clr9[3]))

或者

else if (clr9[0].In(clr9.Skip(1).Take(3).ToArray())