Delete

IAlias person = sql.Alias("person");
IAlias dept = sql.Alias("dept");

// Delete from
IQuery query1 = sql.Query
    .Delete()
    .From(person);

// With join
IQuery query2 = sql.Query
    .Delete()
    .From(person)
    .Join(dept)
        .On(dept["Id"].Eq(person["DepartmentId"]));

// Delete join table
IQuery query3 = sql.Query
    .Delete(x => x.Add(dept))
    .From(person)
    .Join(dept)
        .On(dept["Id"].Eq(person["DepartmentId"]));

// Delete multiple tables
IQuery query4 = sql.Query
    .Delete(x => x.Add(person, dept))
    .From(person)
    .Join(dept)
        .On(dept["Id"].Eq(person["DepartmentId"]));

// Delete top
IQuery query5 = sql.Query
    .Delete(x => x.Top(10))
    .From(person);

// Add delete options to the query
IDelete delete = sql.Delete().Top(10).Add(dept);

IQuery query6 = sql.Query
    .Delete(delete)
    .From(person)
    .Join(dept)
        .On(dept["Id"].Eq(person["DepartmentId"]));

With lambda expressions:

Person person = null;
Department dept = null;

// Delete from
IQuery query1 = sql.Query
    .Delete()
    .From(() => person);

// With join
IQuery query2 = sql.Query
    .Delete()
    .From(() => person)
    .Join(() => dept)
        .On(() => dept.Id == person.Department.Id);

// Delete join table
IQuery query3 = sql.Query
    .Delete(x => x.Add(() => dept))
    .From(() => person)
    .Join(() => dept)
        .On(() => dept.Id == person.Department.Id);

// Delete multiple tables
IQuery query4 = sql.Query
    .Delete(x => x.Add(() => person, () => dept))
    .From(() => person)
    .Join(() => dept)
        .On(() => dept.Id == person.Department.Id);

// Delete top
IQuery query5 = sql.Query
    .Delete(x => x.Top(10))
    .From(() => person);

// Add delete options to the query
IDelete delete = sql.Delete().Top(10).Add(() => dept);

IQuery query6 = sql.Query
    .Delete(delete)
    .From(() => person)
    .Join(() => dept)
        .On(() => dept.Id == person.Department.Id);

Warning

Not all engines support delete with join or delete multiple tables.