传递BinaryExpression作为参数

时间:2015-06-08 06:37:30

标签: c#

public static Expression<Func<T, bool>> OrElse<T>(this
                            Expression<Func<T, bool>> expr1, Expression<Func<T, bool>> expr2)
{
    ParameterExpression parameter = Expression.Parameter(typeof(T));

    ReplaceExpressionVisitor leftVisitor = 
                                new ReplaceExpressionVisitor(expr1.Parameters[0], parameter);
    Expression left = leftVisitor.Visit(expr1.Body);

    ReplaceExpressionVisitor rightVisitor = 
                                new ReplaceExpressionVisitor(expr2.Parameters[0], parameter);
    Expression right = rightVisitor.Visit(expr2.Body);

    return Expression.Lambda<Func<T, bool>>(Expression.OrElse(left, right), parameter);
}

由于我有另一种方法,唯一的区别是return语句中的表达式,如何将Expression.OrElse作为参数传递给方法(我的另一种方法使用AndAlso)?

由于方法接近相同,我希望将一个常用方法与表达式作为参数传递。

我尝试过BinaryExpression但没有成功。

1 个答案:

答案 0 :(得分:6)

那怎么样?

<body>
    <div id="testblock">Testblock: </div>
    <header>
        <hr>
            <p>- Header Background Color Controller -</p>
            <table>
                <tr>
                    <td>Javascript Controller:</td>
                    <td class="JS">Red
                        <input type="hidden" value='false'>
                    </td>
                    <td class="JS">Green
                        <input type="hidden" value='false'>
                    </td>
                    <td class="JS">Blue
                        <input type="hidden" value='false'>
                    </td>
                </tr>
                <tr>
                    <td>jQuery Controller:</td>
                    <td class="jQ" value=false>Red</td>
                    <td class="jQ" value=false>Green</td>
                    <td class="jQ" value=false>Blue</td>
                <tr>
            </table>
        <hr>
    </header>
    <div class="main_div">

</div>