LINQ Interview Question #115

How can you create reusable LINQ predicates for IQueryable?

LINQ Performance, EF Core LINQ, Expressions & Advanced Queries Senior Advanced

Quick Interview Answer

Reusable database predicates can be stored as Expression<Func<T,bool>> values. Because the expression remains inspectable, it can be supplied to IQueryable operators and translated when supported.

Detailed Explanation

Reusable database predicates can be stored as Expression<Func<T,bool>> values. Because the expression remains inspectable, it can be supplied to IQueryable operators and translated when supported.

This is useful for shared business filters such as active records, visibility rules, or reusable search conditions.

Code Example

Expression<Func<Product, bool>> active =
    p => p.IsActive && !p.IsDeleted;

var result = await db.Products
    .Where(active)
    .ToListAsync();