5
ho una query LINQ con un select
, dal mio fornitore di query LINQ io ottenere un albero espressione contenente un MethodCallExpression
, ma proprio come posso ottenere i selezionare proiezioni dalla MethodCallExpression
?Come proiezioni da MethodCallExpression
internal static object Execute(Expression expression, bool isEnumerable)
{
var whereExpression = expression as MethodCallExpression;
if (whereExpression == null) throw new InvalidProgramException("Error");
foreach (var arg in whereExpression.Arguments)
{
if (arg is UnaryExpression)
{
var unaryExpression = arg as UnaryExpression;
var lambdaExpression = unaryExpression.Operand as LambdaExpression;
if (lambdaExpression == null) continue;
// Here I would like to get the select projections, in this example the "word" projection ...
query potrebbe sembrare:
var queryable = new MyQueriableClass();
var query = from thing in queryable
where thing.id == 1
select word;
Utilizzando il tuo approccio, quindi 'body' è' thing.id == 1' nel mio codice, non la proiezione di "parola" che speravo. –
@IngeHenriksen Stavo solo aggiungendo un commento ... * La query 'da parole in parole dove word.Length> 0 select word' non ha una selezione troppo * (quindi chiaramente non la tua) ... Se tu usa la notazione funzionale, sarà chiaro il motivo: 'query.Where (word => word.Length> 0)' dov'è il 'Select' qui? non c'è! – xanatos
Ho aggiornato il mio esempio, forse ora è più chiaro? –