我一直遇到我觉得缺少 LINQ 扩展方法的情况,该方法有效地检查集合中指定谓词是否不匹配。有Any
and All
,但如果我例如使用以下代码:
if (Objects.All(u => u.Distance <= 0))
如果集合中的所有对象都在 0 码或以下,则返回 true。
if (Objects.Any(u => u.Distance <= 0))
如果集合中至少有一个对象距离我 0 码或更少码,则返回 true。
到目前为止一切都很好,这两种方法都很有意义,它们的语法也很有意义。现在,如果我想检查是否没有距离为 0 或更小的对象,我必须将All
方法内的谓词反转为>= 0
代替<= 0
或调用!All()
,这在某些情况下会导致代码的可读性非常差。
是否没有有效的方法Collection.None(u => u.Distance <= 0)
来检查集合中是否没有距离为 0 码或更短的对象?它是语法糖而不是实际问题,但我只是觉得它缺失了。