Both the List.Exists
method and IEnumerable.Any
method can be used to find the first element that satisfies a predicate
in a collection. However, List.Exists
can be faster than IEnumerable.Any
for List
objects, as well as requires
significantly less memory. For small collections, the performance difference may be negligible, but for large collections, it can be noticeable. The
same applies to ImmutableList
and arrays too.
It is important to enable this rule with caution, as performance outcomes can vary significantly across different runtimes. Notably, the performance improvements in .NET 9 have brought
Any
closer to the performance of collection-specific Exists
methods in most scenarios.
Applies to
What is the potential impact?
We measured at least 3x improvement in execution time. For more details see the Benchmarks
section from the More info
tab.
Also, no memory allocations were needed for the Exists
method, since the search is done in-place.
Exceptions
Since LINQ to
Entities
relies a lot on System.Linq
for query conversion,
this rule won’t raise when used within LINQ to Entities syntaxes.