Using `.Count()` to test for emptiness works, but using `.Any()` makes the intent clearer, and the code more readable. However, there are some cases where special attention should be paid: * if the collection is an `EntityFramework` or other ORM query, calling `.Count()` will cause executing a potentially massive SQL query and could put a large overhead on the application database. Calling `.Any()` will also connect to the database, but will generate much more efficient SQL. * if the collection is part of a LINQ query that contains `.Select()` statements that create objects, a large amount of memory could be unnecessarily allocated. Calling `.Any()` will be much more efficient because it will execute fewer iterations of the enumerable. == Noncompliant Code Example ---- private static bool HasContent(IEnumerable strings) { return strings.Count() > 0; // Noncompliant } private static bool HasContent2(IEnumerable strings) { return strings.Count() >= 1; // Noncompliant } private static bool IsEmpty(IEnumerable strings) { return strings.Count() == 0; // Noncompliant } ---- == Compliant Solution ---- private static bool HasContent(IEnumerable strings) { return strings.Any(); } private static bool HasContent2(IEnumerable strings) { return strings.Any(); } private static bool IsEmpty(IEnumerable strings) { return !strings.Any(); } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::message.adoc[] ''' == Comments And Links (visible only on this page) include::comments-and-links.adoc[] endif::env-github,rspecator-view[]