What is an Expression?

An Expression in C# represents code as data. It allows dynamic query generation, runtime compilation, and transformation.

Why Use Expressions?

Basic Syntax

Expression<TDelegate> expression;

Example 1. Simple Expression

using System;
using System.Linq.Expressions;

class Program {
    static void Main() {
        ParameterExpression x = Expression.Parameter(typeof(int), "x");
        BinaryExpression multiply = Expression.Multiply(x, Expression.Constant(2));
        Expression<Func<int, int>> lambda = Expression.Lambda<Func<int, int>>(multiply, x);
        Func<int, int> compiledLambda = lambda.Compile();
        Console.WriteLine(compiledLambda(5)); // Output: 10
    }
}

Example 2. Dynamic Filtering in LINQ

using System;
using System.Linq.Expressions;
using System.Linq;

class Program {
    static void Main() {
        var numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
        ParameterExpression x = Expression.Parameter(typeof(int), "x");
        BinaryExpression condition = Expression.GreaterThan(x, Expression.Constant(5));
        Expression<Func<int, bool>> lambda = Expression.Lambda<Func<int, bool>>(condition, x);
        var result = numbers.AsQueryable().Where(lambda).ToList();
        Console.WriteLine(string.Join(", ", result)); // Output: 6
    }
}

Commonly Used Expressions

When to Use Expression?

Summary

Feature Details
Purpose Build & execute dynamic expressions
Namespace System.Linq.Expressions
Use Case Dynamic LINQ queries, ORM, reflection