Sto giocando con RavenDb e mi chiedo se mi manca qualcosa di ovvio.Il passaggio della query ravendb come Func <T, bool> non funziona
La cosa è, che se sto passando query come questa:
var name = "test";
posts = RavenSession.Query<Post>()
.Where(x => x.Tags.Any(y => y == name))
.OrderByDescending(x => x.CreatedAt)
.Take(5);
Funziona bene, se sto scrivendo equivalente (IMO) utilizzando Func<T, bool>
, esso non va in crash, ma interrogazione manca dove condizione:
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 uscite esso come:
query = inizio = 0 pageSize = 5 aggregazione = Nessuno sorta = -CreatedAt
Aggiornamento: Funziona se sto usando l'espressione invece di Func, così ho pensato possa essere mi ricordo qualcosa di sbagliato su Func e LINQ, così ha scritto un semplice test:
var range = Enumerable.Range(1, 50);
Func<int, bool> selector = x => x == 42;
var filtered = range.Where(x => selector(x));
Quindi ora è solo una domanda perché Raven Db query builder si comporta in modo diverso.
Ho una domanda aggiornata, funziona con espressione. – Giedrius
@Giedrius Ho aggiunto una breve spiegazione alla mia risposta. – Botz3000