5
mir eine Linq-Abfrage mit einem select
habe, von meinen Linq Abfrage-Provider es mir einen Ausdrucksbaum ein MethodCallExpression
enthält, sondern nur, wie kann ich die select Projektionen vom MethodCallExpression
bekommen?Erste Projektionen von Method
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 ...
Abfrage aussehen kann:
var queryable = new MyQueriableClass();
var query = from thing in queryable
where thing.id == 1
select word;
Mit Ihrem Ansatz ist 'body' dann' ding.id == 1' in meinem Code, nicht die "Wort" -Projektion, auf die ich gehofft hatte. –
@IngeHenriksen Ich habe gerade einen Kommentar hinzugefügt ... * Die Abfrage 'von Wort in Worten wo Wort.Länge> 0 Wort auswählen 'hat keine Auswahl auch * (so eindeutig nicht deins) ... Wenn Sie Verwenden Sie die funktionale Notation, es wird klar warum: 'query.Where (word => word.Length> 0)' wo ist das 'Select' hier? da ist nicht! – xanatos
Ich habe mein Beispiel aktualisiert, vielleicht ist es jetzt klarer? –