Any <T>的相反方法是什么

Cas*_*jne 71 c# linq

如果集合不包含对象,我如何检查Linq.IE的反面Any<T>.

我可以用一个!但是为了可读性来反转结果我想知道是否有更好的方法来做到这一点?我应该自己添加扩展吗?

Tho*_*que 80

您可以轻松创建None扩展方法:

public static bool None<TSource>(this IEnumerable<TSource> source)
{
    return !source.Any();
}

public static bool None<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
    return !source.Any(predicate);
}
Run Code Online (Sandbox Code Playgroud)

  • @Ivan,它不是 Linq 本身,而是我的 [Linq.Extras](https://github.com/thomaslevesque/Linq.Extras/blob/master/Linq.Extras/None.cs) 的 [part](https://github.com/thomaslevesque/Linq.Extras/blob/master/Linq.Extras/None.cs) ://github.com/thomaslevesque/Linq.Extras/) 库 (4认同)
  • @OmerRaviv,你是什么意思?他们都在一个空的源头上返回真实...... (3认同)
  • 我觉得这将是对标准 Linq 的一个很好的补充。 (2认同)

Gra*_*ICA 68

验证任何(至少一个)记录与特定标准匹配的相反方式是验证所有记录与标准不匹配.

你没有发布你的完整例子,但如果你想要相反的东西,如:

var isJohnFound = MyRecords.Any(x => x.FirstName == "John");
Run Code Online (Sandbox Code Playgroud)

你可以使用:

var isJohnNotFound = MyRecords.All(x => x.FirstName != "John");
Run Code Online (Sandbox Code Playgroud)

  • 请注意,.All() 在空集上返回 true。这实际上是我想要的行为,所以我设法从 !Any(x =&gt; !x.condition) 切换到 .All(x =&gt; condition)。多谢你们 (2认同)