Expression.Or, el parámetro 'item' no está dentro del alcance
Estoy tratando de escribir una función estática en O dos expresiones, pero recibo el siguiente error:
El parámetro 'elemento' no está dentro del alcance.
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.InvalidOperationException: el parámetro 'elemento' no está dentro del alcance.
el método:
public static Expression<Func<T, bool>> OrExpressions(Expression<Func<T, bool>> left, Expression<Func<T, bool>> right)
{
// Define the parameter to use
var param = Expression.Parameter(typeof(T), "item");
var filterExpression = Expression.Lambda<Func<T, bool>>
(Expression.Or(
left.Body,
right.Body
), param);
// Build the expression and return it
return (filterExpression);
}
editar: agregar más información
Las expresiones siendo o'd provienen del método a continuación, que se ejecuta muy bien. si hay una mejor manera o los resultados, soy todo oídos. Además, no sé cuántos están siendo o quisieran por adelantado.
public static Expression<Func<T, bool>> FilterExpression(string filterBy, object Value, FilterBinaryExpression binaryExpression)
{
// Define the parameter to use
var param = Expression.Parameter(typeof(T), "item");
// Filter expression on the value
switch (binaryExpression)
{
case FilterBinaryExpression.Equal:
{
// Build an expression for "Is the parameter equal to the value" by employing reflection
var filterExpression = Expression.Lambda<Func<T, bool>>
(Expression.Equal(
Expression.Convert(Expression.Property(param, filterBy), typeof(TVal)),
Expression.Constant(Value)
),
param);
// Build the expression and return it
return (filterExpression);
}
editar: agregando aún más información
Alternativamente, ¿hay una mejor manera de hacer un o? Actualmente .Where (restricción) funciona bien donde la restricción es de tipo Expresión>. ¿Cómo puedo hacer where (restricción1 o restricción2) (a la restricción n ')
¡Gracias por adelantado!