我经常想检查提供的值是否与列表中的值匹配(例如在验证时):
if (!acceptedValues.Any(v => v == someValue))
{
// exception logic
}
最近,我注意到ReSharper要求我将这些查询简化为:
if (acceptedValues.All(v => v != someValue))
{
// exception logic
}
显然,这在逻辑上是相同的,也许可读性稍强(如果您做了大量的数学运算),我的问题是:这会导致性能下降吗?
感觉它应该(即.Any()
听起来像它短路,而.All()
听起来像它没有),但我没有任何证据来证实这一点。有没有人有更深层次的知识,是否查询将解决相同的,或者ReSharper是否引导我误入歧途?