Tornerò per rivisitarlo dopo 4 anni perché mentre la mia supposizione originale funzionava, funzionava nel modo sbagliato, ovvero ritirava tutti i record da Mongo e poi li filtrava in memoria e per complicare le cose stava facendo una chiamata sincrona nel database che è sempre una cattiva idea.
La magia avviene nel metodo di estensione expand di LinqKit
Ciò appiattisce l'albero delle espressioni di invocazione in qualcosa che il driver Mongo può comprendere e quindi agire.
.Where(predicate.Expand())