我有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语句混乱。
答案 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())