У меня есть следующий класс:
public class Test
{
public string Text { get; set; }
public int Number { get; set; }
}
И я создаю дерево Expression типа Expression
на этом классе. Когда я делаю это следующим образом:
Expression<Func<Test, bool>> predicate1 = x => x.Text.Length > 5 && x.Number > 0;
Я получаю следующее отладочное представление:
.Lambda #Lambda1<System.Func`2[NHLinqTest.Test,System.Boolean]>(NHLinqTest.Test $x) {
($x.Text).Length > 5 && $x.Number > 0
}
примечание: есть &&
для and-операции.
Когда я делаю это так:
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)));
я получаю следующее отладочное представление:
($var1.Text).Length > 5 & $var1.Number > 0
обратите внимание: есть &
для and-operation. Почему во втором случае я получаю &
? Как модифицировать predicate2
, чтобы получить &&
вместо &
?
.
Заранее спасибо!