Ich benutze etwas ähnliches, wo ich Filter zu einer Abfrage hinzufügen.
Verwendung, um Filter für eine Eigenschaft anzuwenden, deren Name mit Key übereinstimmt und den angegebenen Wert Value verwendet.
public static IQueryable<T> ApplyParameters<T>(this IQueryable<T> query, List<GridParameter> gridParameters)
{
// Foreach Parameter in List
// If Filter Operation is StartsWith
var propertyInfo = typeof(T).GetProperty(parameter.Key);
query = query.Where(PropertyStartsWith<T, string>(propertyInfo, parameter.Value));
}
Und ja, funktioniert diese Methode mit enthält:
public static Expression<Func<TypeOfParent, bool>> PropertyContains<TypeOfParent, TypeOfPropery>(PropertyInfo property, TypeOfPropery value)
{
var parent = Expression.Parameter(typeof(TypeOfParent));
MethodInfo method = typeof(string).GetMethod("Contains", new Type[] { typeof(TypeOfPropery) });
var expressionBody = Expression.Call(Expression.Property(parent, property), method, Expression.Constant(value));
return Expression.Lambda<Func<TypeOfParent, bool>>(expressionBody, parent);
}
Durch diese zwei Beispiele mit, Sie können leichter verstehen, wie wir verschiedene Methoden beim Namen nennen können.
Starten Sie zunächst einige Antworten, wie diese http://stackoverflow.com/questions/1648270/how-to-determine-what-happens-behind-the-scene-in-net/1648306#1648306 und dies http://stackoverflow.com/questions/2331927/linq-to-xml-replace-child-nodes-but-keep-state/2332087#2332087. – Steven
Hier noch ein dup: http://stackoverflow.com/questions/1270783/how-to-combine-two-expressions-result-exp1exp2 – Kamarey
Thx für Hinweis darauf, Grüße –