Sto cercando di estrarre l'espressione del filtro da ODataQueryOptions
in modo da poterlo utilizzare nella mia classe logica aziendale.Come trasformare il filtro OData in un'espressione LINQ?
public PageResult<Poco> Get(ODataQueryOptions odataQueryOptions)
{
Expression<Func<Poco, bool>> myExpression = ... // what do i do here?
var result = _myBusinessLogic.Search(myExpression);
return new PageResult<Poco>(result, null, null);
}
ho preso uno sguardo al blog che descrive tradurre la query in HQL here e penso (almeno spero) che è un peso inutile per quello che sto cercando di fare.
Fondamentalmente ho bisogno di ottenere l'espressione filtro nel modulo Expression<Func<Poco, bool>>
. Ho provato a giocare con ApplyTo()
ma non riesco a capirlo. Qualsiasi aiuto apprezzato.
Grazie, ho finito per fare qualcosa di simile. Sembra proprio che sia necessario un po 'di chirurgia per ottenere l'espressione del filtro dai risultati di ApplyTo - casting su MethodCallExpression, estrazione di argomenti e operandi, ecc. Leggermente preoccupato per la stabilità a lungo termine di questo codice. – boris
Non sto esponendo il contesto al livello applicazione (api) e vorrei sfruttare ODataQueryOptions e le classi correlate per poter applicare filtri, impaginazione, navigazione e così via, nel mio livello dati. Idealmente, mi piacerebbe essere in grado di estrarre tutte le espressioni che potrei quindi applicare al mio queriesble, passando quelle come parametro ai livelli inferiori dell'applicazione. L'opzione che ho finora è quella di passare ODataQueryOptions, ma questo accoppiare il mio business e il livello dati ai dati, che non voglio. Hai un esempio forse su GitHub che potrebbe aiutarmi? – Manuel