我有List<String> clr9
,它的已知Count
为9。
我想知道的是如何速记代码后面的内容。
else if(clr9[0].Equals(clr9[1]) && clr9[0].Equals(clr9[2]) && clr9[0].Equals(clr9[3]))
我已经尝试过这个:
else if(clr9[0].Equals(clr9[1].Equals(clr9[2].Equals(clr9[3]))))
但它似乎不起作用。有什么方法可以避免与号吗?基本上只是问是否有办法找出所有 4 个字符串是否相同,而不会弄乱 if 语句。
Distinct 会起作用,但我认为直接测试相等性更能表达意图:
if(clr9.Skip(1).All(c => c.Equals(clr9[0])))
您可以区分列表以删除重复项并检查长度。
例如
clr9.Distinct().Count() == 1
或者,如果您希望它不区分大小写
clr9.Distinct(StringComparer.CurrentCultureIgnoreCase).Count() == 1
好吧,如果您只检查单个列表中的所有字符串,例如clr9
.您可以做的是使用 LINQ Distinct
:
if (clr9.Distinct().Skip(1).Any())
{
//Do something
}
T
希望对您有所帮助!
我经常遇到这种情况,以至于我为它编写了一个简单的扩展方法。
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())