C#idiomatic C#
ca1860fundamentals/code-analysis/quality-rules

Code analysis

CA1860: Avoid using 'Enumerable.Any()' extension method

Learn about code analyzer rule CA1860 - Avoid using 'Enumerable.Any()' extension method

CA1860 Performance enabled by default in .NET 10: As suggestion
Fix is breaking or non-breaking Non-breakingApplicable languages C# and Visual Basic

Cause

System.Linq.Enumerable.Any is called on a type that has a Length, Count, or IsEmpty property.

Rule description

To determine whether a collection type has any elements, it's more efficient and clearer to use the Length, Count, or IsEmpty (if possible) properties than to call the System.Linq.Enumerable.Any method.

Any(), which is an extension method, uses language integrated query (LINQ). It's more efficient to rely on the collection's own properties, and it also clarifies intent.

How to fix violations

Replace a call to Any() with a call to the collection's Length, Count, or IsEmpty property.

Example

The following code snippet shows a violation of CA1860:

csharp
bool HasElements(string[] strings)
{
    return strings.Any();
}
vb
Function HasElements(strings As String()) As Boolean
    Return strings.Any()
End Function

The following code snippet fixes the violation:

csharp
bool HasElements(string[] strings)
{
    return strings.Length > 0;
}
vb
Function HasElements(strings As String()) As Boolean
    Return strings.Length > 0
End Function

When to suppress warnings

It's safe to suppress this warning if performance isn't a concern.

Suppress a warning

If you just want to suppress a single violation, add preprocessor directives to your source file to disable and then re-enable the rule.

csharp
#pragma warning disable CA1860
// The code that's violating the rule is on this line.
#pragma warning restore CA1860

To disable the rule for a file, folder, or project, set its severity to none in the configuration file.

ini
[*.{cs,vb}]
dotnet_diagnostic.CA1860.severity = none

For more information, see How to suppress code analysis warnings.