que tienen la clase siguiente:¿Por Expression.And representa "Y", pero no "&&"
public class Test
{
public string Text { get; set; }
public int Number { get; set; }
}
Y estoy creando y el árbol de expresión de tipo Expression<Func<Test, bool>>
en esta clase. Cuando lo hago de esta manera:
Expression<Func<Test, bool>> predicate1 = x => x.Text.Length > 5 && x.Number > 0;
me sale el siguiente vista de depuración:
.Lambda #Lambda1<System.Func`2[NHLinqTest.Test,System.Boolean]>(NHLinqTest.Test $x) {
($x.Text).Length > 5 && $x.Number > 0
}
nota: hay un &&
por e-operación.
Cuando lo hago de esta manera:
var y = Expression.Parameter(typeof(Test));
var predicate2 = Expression.And(
Expression.GreaterThan(
Expression.Property(Expression.Property(y, "Text"), "Length"),
Expression.Constant(5)),
Expression.GreaterThan(
Expression.Property(y, "Number"),
Expression.Constant(0)));
me sale el siguiente vista de depuración:
($var1.Text).Length > 5 & $var1.Number > 0
Nota: hay &
por e-operación. ¿Por qué recibo &
en el segundo caso? Cómo modificar predicate2
para obtener &&
en lugar de &
?
¡Gracias de antemano!