¿Cómo convertir la expresión Lambda a Sql?

Estoy desarrollando un pequeño framework para acceder a la base de datos. Quiero agregar una característica que haga una consulta usando una expresión lambda. ¿Cómo hago esto?

public class TestModel
{
    public int Id {get;set;}
    public string Name {get;set;}
}

public class Repository<T>
{
    // do something.
}

Por ejemplo:

var repo = new Repository<TestModel>();

var query = repo.AsQueryable().Where(x => x.Name == "test"); 
// This query must be like this:
// SELECT * FROM testmodel WHERE name = 'test'

var list = query.ToDataSet();
// When I call ToDataSet(), it will get the dataset after running the made query.

Respuestas a la pregunta(3)

Su respuesta a la pregunta