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



我有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())

相关内容

  • 没有找到相关文章

最新更新