Estoy jugando con RavenDb y me pregunto si me falta algo obvio.Al pasar la consulta ravendb como Func <T, bool> no funciona
La cosa es, que si yo estoy pasando consulta como esta:
var name = "test";
posts = RavenSession.Query<Post>()
.Where(x => x.Tags.Any(y => y == name))
.OrderByDescending(x => x.CreatedAt)
.Take(5);
Funciona bien, si estoy escribiendo equivalente (OMI) usando Func<T, bool>
, que no se desplome, pero no se encuentra en consulta condición:
var name = "test";
Func<Post, bool> selector = x => x.Tags.Any(y => y == name);
posts = RavenSession.Query<Post>()
.Where(x => selector(x))
.OrderByDescending(x => x.CreatedAt)
.Take(5);
Profiler salidas se siente:
consulta = inicio = 0 pageSize = 5 agregación = Ninguno tipo = -CreatedAt
Actualización: Funciona si estoy usando la expresión en lugar de Func, así que pensé que puede ser que recuerde algo raro en Func y LINQ, por lo que escribió una simple prueba:
var range = Enumerable.Range(1, 50);
Func<int, bool> selector = x => x == 42;
var filtered = range.Where(x => selector(x));
Así que ahora solo es cuestión de por qué el generador de consultas Raven Db actúa de manera diferente.
He actualizado la pregunta, funciona con expresión. – Giedrius
@Giedrius Agregué una breve explicación a mi respuesta. – Botz3000