我有一个针对IQueryable<WebMessageDto>
的表达式查询。
在我的表达式访问者中,我将可查询的源代替为IQueryable<WebMessage>
。
当查询执行时,我得到异常:
表达类型&#39; WebMessage&#39;不能用于&#39; WebMessageDto&#39;类型的参数方法&#39; Int32计数[WebMessageDto](WebMessageDto])&#39;
我可以替换此表达式中的类类型吗?
WebMessage
和WebMessageDto
具有相同的字段。
我们的想法是处理对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;
}