Dynamic Query for Filtering Data (LINQ-like Query)

Suppose you have a List<Person> and want to filter it dynamically by a property name.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main()
    {
        var people = new List<Person>
        {
            new Person { Name = "Alice", Age = 25 },
            new Person { Name = "Bob", Age = 30 },
            new Person { Name = "Charlie", Age = 35 }
        };

        string propertyName = "Age";
        int value = 30;

        var parameter = Expression.Parameter(typeof(Person), "x");
        var property = Expression.Property(parameter, propertyName);
        var constant = Expression.Constant(value);
        var condition = Expression.GreaterThan(property, constant);

        var lambda = Expression.Lambda<Func<Person, bool>>(condition, parameter);

        var filteredList = people.AsQueryable().Where(lambda).ToList();

        foreach (var person in filteredList)
        {
            Console.WriteLine($"{person.Name}, {person.Age}");
        }
    }
}