What is an Expression?
An Expression in C# represents code as data. It allows dynamic query generation, runtime compilation, and transformation.
Why Use Expressions?
- Dynamic LINQ queries
- Runtime code compilation
- Expression manipulation
- Performance optimization
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
- Expression.Constant(10) - Represents a constant (10).
- Expression.Parameter(typeof(int), "x") - Represents a variable (x).
- Expression.Add(x, y) - Represents addition (x + y).
When to Use Expression?
- Dynamic Query Building
- ORMs (EF Core, Dapper)
- Runtime Code Compilation
Summary
Feature |
Details |
Purpose |
Build & execute dynamic expressions |
Namespace |
System.Linq.Expressions |
Use Case |
Dynamic LINQ queries, ORM, reflection |