J'ai des problèmes pour faire pivoter un générateur d'arbre d'expression que j'ai construit.Expression Tree Expression.Call Syntaxe
Essentiellement, je veux convertir ce qui suit à un arbre d'expression:
var res = myObjInstance.AnalysisResponseMeasures
.First(p => p.MeasureTypeId == 1).MeasureValue
Jusqu'à présent, j'ai:
var propertyExp = Expression.Property(pe, "AnalysisResponseMeasures");
var someParam = Expression.Parameter(typeof(AnalysisResponseMeasure), "p");
var someParam2 = Expression.Parameter(typeof(AnalysisResponseMeasure), "p");
var childPropExp = Expression.Equal(
Expression.Property(someParam, "MeasureTypeId"),
Expression.Constant(1));
var firstExp = Expression.Call(
typeof(IEnumerable<AnalysisResponseMeasure>),
"First",
new[] { typeof(AnalysisResponseMeasure) },
propertyExp,
Expression.Lambda(childPropExp, someParam2));
var selectExp = Expression.Property(firstExp, "MeasureValue");
Mais, je reçois une erreur d'exécution indiquant que le type de IEnumerable<AnalysisResponseMeasure>
n'a pas de méthode First
.
J'ai clairement mes paramètres, mais je n'arrive pas à comprendre ce qui ne va pas. Toute aide sera très appréciée.
Vous souhaitez appeler la méthode statique [Enumerable.First] (https://msdn.microsoft.com/en-us/library/bb291976 (v = vs.100) .aspx) –
@JohanLarsson, merci. Je n'essaie pas d'appeler cette méthode statique. J'essaie d'appeler la méthode d'extension Linq d'abord avec un lambda. –
C'est la méthode à laquelle je suis lié. –