Filtrar la tabla "Incluye" en la consulta de Entity Framework

Esto es para Entity Framework para .NET 3.5:

Tengo la necesidad de consultar una tabla e incluir una colección de la tabla "muchos" de una relación uno a muchos. Estoy tratando de filtrar esa colección como parte de la consulta: soy bastante nuevo en Entity Framework y tengo problemas para resolverlo.

Ejemplo simplificado: el autor tiene libros y el libro tiene una columna IsFiction. Quiero una lista filtrada de autores, junto con todos los libros de ficción.

Sin el filtro, es fácil:

var q = from a in db.Authors.Include("Books")
        where a.BirthYear > 1900
        select a;

Puedo filtrar después del hecho, algo como:

var fictionBooks = a.Books.Where(b => b.IsFiction);

Pero el problema es que la consulta original ya se ejecutó e incluyó esos resultados, que es un procesamiento innecesario de la base de datos.

Puedo consultar por separado, como:

var q = from a in db.Authors where a.BirthYear > 1900 select a;
foreach (var a in q)
{
    var books = from b in db.Books 
                where ((b.Author.Id == a.Id) && (b.IsFiction))
                select b;
}

Pero, por supuesto, esa es una llamada para cada autor, que también quiero evitar.

Puedo ir hacia atrás, como:

var allBooks = from b in db.Books.Include("Author")
               where b.IsFiction
               select b;

Pero luego vuelvo al problema original, excepto ahora en el lado del autor en lugar del lado del libro.

Debe haber una solución que lo abarque todo: puedo hacerlo en SQL con bastante facilidad:

select * from author a
left join book b on a.id = b.author_id and b.is_fiction = 1
where a.birth_yea,r > 1900

¿Alguna sugerencia?