Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>If you provider does not support Invoke and you need to combine two expression, you can use an ExpressionVisitor to replace the parameter in the second expression by the parameter in the first expression.</p> <pre><code>class ParameterUpdateVisitor : ExpressionVisitor { private ParameterExpression _oldParameter; private ParameterExpression _newParameter; public ParameterUpdateVisitor(ParameterExpression oldParameter, ParameterExpression newParameter) { _oldParameter = oldParameter; _newParameter = newParameter; } protected override Expression VisitParameter(ParameterExpression node) { if (object.ReferenceEquals(node, _oldParameter)) return _newParameter; return base.VisitParameter(node); } } static Expression&lt;Func&lt;T, bool&gt;&gt; UpdateParameter&lt;T&gt;( Expression&lt;Func&lt;T, bool&gt;&gt; expr, ParameterExpression newParameter) { var visitor = new ParameterUpdateVisitor(expr.Parameters[0], newParameter); var body = visitor.Visit(expr.Body); return Expression.Lambda&lt;Func&lt;T, bool&gt;&gt;(body, newParameter); } [TestMethod] public void ExpressionText() { string text = "test"; Expression&lt;Func&lt;Coco, bool&gt;&gt; expr1 = p =&gt; p.Item1.Contains(text); Expression&lt;Func&lt;Coco, bool&gt;&gt; expr2 = q =&gt; q.Item2.Contains(text); Expression&lt;Func&lt;Coco, bool&gt;&gt; expr3 = UpdateParameter(expr2, expr1.Parameters[0]); var expr4 = Expression.Lambda&lt;Func&lt;Recording, bool&gt;&gt;( Expression.OrElse(expr1.Body, expr3.Body), expr1.Parameters[0]); var func = expr4.Compile(); Assert.IsTrue(func(new Coco { Item1 = "caca", Item2 = "test pipi" })); } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload