在MethodCallExpression中更改参数

时间:2014-06-23 04:50:17

标签: c# iqueryable linq-expressions

我有一个针对IQueryable<WebMessageDto>的表达式查询。 在我的表达式访问者中,我将可查询的源代替为IQueryable<WebMessage>。 当查询执行时,我得到异常:

  

表达类型&#39; WebMessage&#39;不能用于&#39; WebMessageDto&#39;类型的参数方法&#39; Int32计数[WebMessageDto](WebMessageDto])&#39;

我可以替换此表达式中的类类型吗? WebMessageWebMessageDto具有相同的字段。

我们的想法是处理对WebMessageDto的查询,在WebMessage DataSource上执行它,然后将结果转换为WebMessageDto并返回它。

我尝试在MethodCallExpression中更改参数,但我有例外......

    protected override Expression VisitMethodCall(MethodCallExpression node)
    {
        if (node.Method.Name == "Count")
        {
            //Expression.Convert(node.Arguments[0], typeof(WebMessage));

            //List<ConstantExpression> newArgs = new List<ConstantExpression>()
            //{
            //    Expression.Constant(typeof(WebMessage)
            //};
            //
            //node.Update(node.Object, newArgs);
        }

        return node;
    }

0 个答案:

没有答案