Here is some code that compiles as is and does the job.
Basically use two dictionaries, one containing a mapping from operator names to boolean functions, and another containing a map from the property names of the User type to PropertyInfos used to invoke the property getter (if public).
You pass the User instance, and the three values from your table to the static Apply method.
class User
{
public int Age { get; set; }
public string UserName { get; set; }
}
class Operator
{
private static Dictionary> s_operators;
private static Dictionary s_properties;
static Operator()
{
s_operators = new Dictionary>();
s_operators["greater_than"] = new Func