I am starting to see methods like the one below used more and more, but it's a concept that I don't fully understand.
    public virtual Task<List<T>> GetAsync(Expression<Func<T, bool>> exp)
    {
        using (var conn = _factory.OpenDbConnection())
        {
            return conn.SelectAsync(exp);
        }
    }
Can someone help me translate the method parameter there that is an Expression? Like explain it as how it differs from a standard instance parameter?
 
    