que je suis cet excellent exemple: Convert Linq to Sql Expression to Expression Treeconstruction Dynamiquement un arbre d'expression
Dans mon cas, je suis en train de construire un arbre d'expression où le type à filtrer est seulement connu au moment de l'exécution, et est exprimé en un string. Dans l'exemple ci-dessus du type Région est déjà connu et tapé directement:
ParameterExpression pe = Expression.Parameter(typeof(Region), "region");
Dans ma demande, je suis en mesure de réécrire ce que:
ParameterExpression pe = Expression.Parameter(Type.GetType("mystring"), "listData");
Mon bloc d'achoppement est-ce de la exemple:
MethodCallExpression whereCallExpression = Expression.Call(
typeof(Queryable),
"Where",
new Type[] { query.ElementType },
query.Expression,
Expression.Lambda<Func<Region, bool>>(e3, new ParameterExpression[] { pe }));
var results = query.Provider.CreateQuery<Region>(whereCallExpression);
Dans ces deux lignes Région est directement tapés. Existe-t-il un moyen d'utiliser dynamiquement une chaîne "Region" pour obtenir la même chose?
une idée de passer StringComparison.OrdinalIgnoreCase à Expression.Equal appeler? – dodbrian
'Expression.Equal()' correspond à l'utilisation de l'opérateur '=='. Vous ne seriez pas en mesure d'ajouter ce paramètre. Vous devez générer une expression équivalente à 'stringVar.Equals (otherStringVar, StringComparison.OrdinalIgnoreCase)' ou en utilisant le static 'String.Equals (stringVar, otherStringVar, StringComparison.OrdinalIgnoreCase)'. –