Regresaré para revisar esto después de 4 años porque, si bien mi suposición original funcionó, funcionó de manera incorrecta, ya que estaba recuperando todos los registros de Mongo y luego filtrándolos en la memoria y, para complicar las cosas, estaba haciendo una llamada sincrónica. en la base de datos, lo que siempre es una mala idea.
La magia sucede en el método de extensión de expansión de LinqKit
Eso aplana el árbol de expresión de invocación en algo que el controlador de Mongo puede entender y, por lo tanto, actuar en consecuencia.
.Where(predicate.Expand())