hamsterbyte

LINQ Performance Tips for C# Developers

LINQ (Language Integrated Query) is one of C#’s most powerful features, but it can impact performance if not used carefully. Let’s explore how to optimize your LINQ queries.

Deferred vs Immediate Execution

Understanding when LINQ executes is critical for performance:

// Deferred - query doesn't execute until enumeration
var query = numbers.Where(n => n > 5);

// Immediate - executes right away
var list = numbers.Where(n => n > 5).ToList();

Avoid Multiple Enumerations

One of the most common performance issues is enumerating a query multiple times:

// Bad - enumerates twice
var query = GetExpensiveData().Where(x => x.IsActive);
var count = query.Count();
var items = query.ToList();

// Good - enumerate once
var items = GetExpensiveData().Where(x => x.IsActive).ToList();
var count = items.Count;

Use Any() Instead of Count()

When checking if items exist, use Any() instead of Count() > 0:

// Inefficient
if (collection.Count() > 0)

// Efficient
if (collection.Any())

Consider IEnumerable vs IQueryable

For database queries, use IQueryable to ensure filtering happens on the database server, not in memory.

By following these tips, you can write LINQ queries that are both expressive and performant.

Tags: