J'ai un IQueryable et un objet de type T.Comment construire un arbre d'expression Linq qui se compare à un objet générique?
Je veux faire IQueryable(). Où (o => o.GetProperty (fieldName) == objectOfTypeT.GetProperty (fieldName))
si ...
public IQueryable<T> DoWork<T>(string fieldName)
where T : EntityObject
{
...
T objectOfTypeT = ...;
....
return SomeIQueryable<T>().Where(o => o.GetProperty(fieldName) == objectOfTypeT.GetProperty(fieldName));
}
Fyi, GetProperty n'est pas une fonction valide. J'ai besoin de quelque chose qui remplisse cette fonction. Suis-je en train de fondre le cerveau le vendredi après-midi ou est-ce une chose complexe à faire?
objectOfTypeT Je peux faire ce qui suit ...
var matchToValue = Expression.Lambda(ParameterExpression
.Property(ParameterExpression.Constant(item), "CustomerKey"))
.Compile().DynamicInvoke();
qui fonctionne parfaitement, maintenant je dois juste la deuxième partie.
Où (o = SomeIQueryable() retour>o.GetProperty (fieldName) == matchValue);
Parfait. Exactement ce dont j'avais besoin. Maintenant, pour comprendre exactement ce qui se passe :) – JTew
@JTew - l'entrée du blog pourrait faire la lumière ... –