Выражение с использованием метода "where"
Я пытаюсь достичь такого вида выражения: "A => ABWhere(extExp).Count() > 0", и у меня возникла проблема с тем, как сделать выражение для Where(...), которое, как я предполагаю, является расширением метод для ICollection<>. Может ли кто-нибудь помочь?
Expression<Func<N, bool>> conditions = c => c.T_ID == 1 || c.T_ID == 2;
ParameterExpression mpe = Expression.Parameter(typeof(T), "A");
Expression prop = Expression.Property(mpe,typeof(T).GetProperty("B"));
...
var propWhere = Expression.Call(..., prop, conditions);
Как правильно вызвать его
1 ответ
То, что происходит, это перегрузка вызова, который принимает MethodInfo. Чтобы получить информацию о методе, я думаю, что лучше использовать код из этого ответа - /questions/3153615/poluchenie-methodinfo-staticheskogo-metoda-staticheskogo-klassa/3153629#3153629
public static MethodInfo GetMethodInfo(Expression<Action> expression)
{
var member = expression.Body as MethodCallExpression;
if (member != null)
return member.Method;
throw new ArgumentException("Expression is not a method", "expression");
}
использование
var whereMethodInfo = GetMethodInfo(() => Enumerable.Where(Enumerable.Empty<T>(), i=>true));
Кстати, я предлагаю вам скачать LINQPad и использовать его для написания запросов и просмотра созданных деревьев выражений и кода IL.