如何在Expression <func <iqueryable <tmodel>,IIncludableQueryable <tmodel,object =“” >>>中更改参数的类型

时间:2019-04-29 20:20:50

标签: c# .net linq .net-core

我需要转换表达式的类型:

Expression<Func<IQueryable<TModelBase>, IIncludableQueryable<TModelBase, object>>>

收件人:

Expression<Func<IQueryable<TModel>, IIncludableQueryable<TModel, object>>>

其中:

TModel : TModelBase

我已经尝试过Expression.Convert方法:

var converted = Expression.Convert(_baseExpression, typeof(IIncludableQueryable<TModel, object>));

几乎成功了,因为它在主体“转换”中返回了带有新类型和新单词的Expression。我希望Expression.Body与Convert之前的外观相同,但是类型有所更改。

转换后返回表达式的示例:

{x => Convert(x => x.Include(m => m.MaterialBaseSomething).Include(m => m.MaterialBaseGroup), IIncludableQueryable`2)}

我还尝试过ExpressionVisitor来更改参数类型。我明白了:

Expression<Func<IQueryable<TModel>, IIncludableQueryable<TModelBase, object>>>

所以我仍然需要更改结果类型。

0 个答案:

没有答案