Ich komme zurück, um dies nach 4 Jahren noch einmal zu wiederholen, denn während meine ursprüngliche Vermutung funktionierte, funktionierte sie falsch, nämlich alle Datensätze aus Mongo zurückzuziehen und sie dann im Speicher zu filtern und um die Dinge zu verkomplizieren, machte es einen synchronen Anruf in die Datenbank, was immer eine schlechte Idee ist.
Die Magie geschieht in der Expand-Erweiterungsmethode von LinqKit
Dadurch wird der Ausdrucksbaum des Aufrufs in etwas abgeflacht, das der Mongo-Treiber verstehen und auf das er reagieren kann.
.Where(predicate.Expand())